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