gin 框架
- 众多的 golang web 框架中,gin 是一个比较轻量级的框架,不像 beego 那样,还有 orm 模块。接口设计,运行速度方面,gin 都算是比较让人满意的。
web 框架的顶层设计
- 每个语言都有自己框架的特点,golang 的话,因为有官方的标准库,标准库的质量是比较可靠的,所以绝大多数框架都是基于标准库,面向实际应用场景,将底层的细节进一步地抽象,达到减少开发时间,提升代码质量的目的。
- 所以,在顶层分析框架设计的时候,需要明确现在 web 框架主要的功能,以及 golang 标准包提供了什么工具。
-
需求:RESTful 接口。目前主流的后端设计都是围绕接口展开的,而目前主流的接口设计范式就是 RESTful。也就是说,框架的设计目标应该满足以下几点:
- 便捷的路由分组
- 快速调用 http 方法 get,post,delete,put,patch,head,options 等进行资源管理
- 良好的并发性能
- 解析 URL 参数或 request body 便捷
- 需要对 JSON 有良好的支持
-
golang 的 http 标准包有哪些组件,组件之间的关联又是如何?http 标准包是开发 web 框架必不可少的原材料:
- 在 http 包的源码中,有几个重要的部件:其中 struct 有 Server,Conn。interface 有 Handler。分别对应服务器对象,connection 对象,以及路由器。
- http 标准包的编程逻辑:需要实现 Handler 接口的 ServeHTTP 方法,相当于新建一个路由规则,当 server 启动,建立 http 连接之后,就可以按照定义的路由规则进行处理了。
gin 是如何整合 http 包的
- 定义一个 engine,实现 ServeHTTP 方法,这时,就可以将 engine 作为 Handler 传给 http 包的 ListenAndServe 函数。从 http 标准包的角度来看,gin 就是实现了一个功能强大的 Handler。
- (未完待续)