这里我们首先介绍一下,目前市面上绝大部分web框架,一次 request -> response 的生命周期具体经过了哪些节点。

1.路由

当客户端的请求到达服务器之后,后端服务首先需要对请求的路径进行匹配,当客户端请求的路径与后端服务中已存在的路径匹配成功后,进入下一步。
路由就是通过相关算法专门对请求路径精确匹配的模块。

2.中间件

中间件根据需要进行加载,例如: token 中间件,就是负责对需要鉴权的接口进行校验,只有鉴权通过后,才能进入下一步,否则就直接在中间件向客户端响应,不再执行后续逻辑。
中间件本质上仍然是一个回调函数,在函数内部决定逻辑是否继续向后执行。

3.表单参数验证器

负责接口参数校验,你可以把它编写为一个中间件调用,也可以作为请求过程中的一个节点使用,在ginskeleton 中是作为一次请求过程中的节点去使用,主要负责对表单请求的参数进行校验,只有验证通过后,才能进入下一个环节——控制器。

4.控制器

控制器理解为调度器更为合理,它作为业务开始分发的一个中枢节点,在这里开始对业务的处理方式进行分块处理,如果是简单逻辑可以直接调用 model 层中的方法完成,获取返回结果,直接给客户端响应。如果业务复杂,那么调用 service 层中的逻辑,将复杂的业务分步骤处理,根据需要继续调用 model 层共同完成,最后将结果返回给控制器,由控制器汇总处理结果,将最终结果给客户返回。

5.model 层

该层专门负责将业务落地到数据库,curd 代码块的重灾区。

6.service 层

处理复杂业务逻辑的代码块重灾区,不管是原始的请求数据需要复杂处理后落地到数据库,还是数据库查询出原始数据需要二次加工后才能响应,service 层专门负责解决各种疑难杂症。

7.最后贴一张图说明一下整个过程

后续我带大家进入整个请求到响应的全生命周期过程学习,ginskeleton 只是在每个环境做了一些兼容逻辑、处理,使开发业务更加顺畅,后面的学习本质上都是对 gin 的学习,ginskeleton 自身几乎没有新的知识点,没有学习负担.
request_response.png