# 源碼解析之:gin
[gin](https://github.com/gin-gonic/gin) 是一個(gè)用golang實(shí)現(xiàn)的HTTPweb框架。
# 特性
[官網(wǎng)上](https://gin-gonic.github.io/gin/)描述,gin的特性包括:
- 快:路由使用`基數(shù)樹`,低內(nèi)存,不使用反射;
- 中間件注冊:一個(gè)請求可以被一系列的中間件和最后的action處理
- 奔潰處理:gin可以捕獲panic使應(yīng)用程序可用
- JSON校驗(yàn):將請求的數(shù)據(jù)轉(zhuǎn)換為JSON并校驗(yàn)
- 路由組:更好的組織路由的方式,無限制嵌套而不影響性能
- 錯(cuò)誤管理:可以收集所有的錯(cuò)誤
- 內(nèi)建渲染方式:JSON,XML和HTML渲染方式
- 可繼承:簡單的去創(chuàng)建中間件
# 代碼結(jié)構(gòu)
~~~
|-- binding 將請求的數(shù)據(jù)對象化并校驗(yàn)
|-- examples 各種列子
|-- json 提供了另外一種json實(shí)現(xiàn)
|-- render 響應(yīng)
|-- gin.go gin引擎所在
|-- gin_test.go
|-- routes_test.go
|-- context.go 上下文,將各種功能聚焦到上下文(裝飾器模式)
|-- context_test.go
|-- response_writer.go 響應(yīng)的數(shù)據(jù)輸出
|-- response_writer_test.go
|-- errors.go 錯(cuò)誤處理
|-- errors_test.go
|-- tree.go 路由的具體實(shí)現(xiàn)
|-- tree_test.go
|-- routergroup.go
|-- routergroup_test.go
|-- auth.go 一個(gè)基本的HTTP鑒權(quán)的中間件
|-- auth_test.go
|-- logger.go 一個(gè)日志中間件
|-- logger_test.go
|-- recovery.go 一個(gè)崩潰處理插件
|-- recovery_test.go
|-- mode.go 應(yīng)用模式
|-- mode_test.go
|-- utils.go 雜碎
|-- utils_test.go
~~~
接下來的章節(jié)將按照各個(gè)模塊進(jìn)行合-分講解,讓優(yōu)秀不再神秘。分析版本為v1.2。
