乐趣区

深入理解gin-framework一

gin 框架

  • 众多的 golang web 框架中,gin 是一个比较轻量级的框架,不像 beego 那样,还有 orm 模块。接口设计,运行速度方面,gin 都算是比较让人满意的。

web 框架的顶层设计

  • 每个语言都有自己框架的特点,golang 的话,因为有官方的标准库,标准库的质量是比较可靠的,所以绝大多数框架都是基于标准库,面向实际应用场景,将底层的细节进一步地抽象,达到减少开发时间,提升代码质量的目的。
  • 所以,在顶层分析框架设计的时候,需要明确现在 web 框架主要的功能,以及 golang 标准包提供了什么工具。
  • 需求:RESTful 接口。目前主流的后端设计都是围绕接口展开的,而目前主流的接口设计范式就是 RESTful。也就是说,框架的设计目标应该满足以下几点:

    1. 便捷的路由分组
    2. 快速调用 http 方法 get,post,delete,put,patch,head,options 等进行资源管理
    3. 良好的并发性能
    4. 解析 URL 参数或 request body 便捷
    5. 需要对 JSON 有良好的支持
  • golang 的 http 标准包有哪些组件,组件之间的关联又是如何?http 标准包是开发 web 框架必不可少的原材料:

    1. 在 http 包的源码中,有几个重要的部件:其中 struct 有 Server,Conn。interface 有 Handler。分别对应服务器对象,connection 对象,以及路由器。
    2. http 标准包的编程逻辑:需要实现 Handler 接口的 ServeHTTP 方法,相当于新建一个路由规则,当 server 启动,建立 http 连接之后,就可以按照定义的路由规则进行处理了。

gin 是如何整合 http 包的

  1. 定义一个 engine,实现 ServeHTTP 方法,这时,就可以将 engine 作为 Handler 传给 http 包的 ListenAndServe 函数。从 http 标准包的角度来看,gin 就是实现了一个功能强大的 Handler。
  2. (未完待续)
退出移动版