据传Gin框架是Golang语言领域最屌的web框架。
开启Gin的学习整理之路。
一、介绍
- github: https://github.com/gin-gonic/gin
- 官方文档: https://gin-gonic.com/
1 | Gin 是什么? |
以上内容摘自官方文档中对Gin的介绍。其中提到的martini框架就是我所在项目组之前用的web框架,一个好死不死凑合着用的框架,一个可以重复注册method:path的web框架。
据我前同事讲这两个框架的命名渊源:martini是一种鸡尾酒,gin是调制martini的基酒。
gin框架基于httprouter实现最重要的路由模块,采用类似前缀树一样的数据结构来存储路由与handle方法的映射.
二、核心组件介绍
gin的代码结构乱到无力吐槽,所有代码堆在了同一层。好在项目简单,可以遍历一遍每个go文件。总结起来,gin的核心就是一下几个概念:
- Engine 容器引擎,整个框架的基础。保存了各个组件的信息。 – Gin框架学习(二)– Engine
- Context 上下文对象,负责处理请求和回应,其中的handlers是存储处理请求时中间件和处理方法的。Context也是在应用过程中开发人员最常接触的概念。记录了request中传递的信息。 – Gin框架学习(三)– Context
- Engine.trees 负责存储路由和handle方法的映射,采用类似字典树的结构。保存了url与handle的映射关系。Gin框架学习(四)–Trees
- Engine.RouterGroup 用于支持Gin路由绑定和路由匹配的基础,基于前缀树radix-tree。RouterGroup是一个路由组,保存了路由信息。
三、项目目录如下(v1.7.2)
1 | . |