Gin 是一個用 Go (Golang) 編寫的 web 框架。 它是一個類似于 [martini](https://github.com/go-martini/martini) 但擁有更好性能的 API 框架, 由于 [httprouter](https://github.com/julienschmidt/httprouter),速度提高了近 40 倍。 如果你是性能和高效的追求者, 你會愛上 Gin.
在本節中,我們將介紹 Gin 是什么,它解決了哪些問題,以及它如何幫助你的項目。
或者, 如果你已經準備在項目中使用 Gin,請訪問[快速入門](https://gin-gonic.com/zh-cn/docs/quickstart/).
## 特性
### 快速
基于 Radix 樹的路由,小內存占用。沒有反射。可預測的 API 性能。
### 支持中間件
傳入的 HTTP 請求可以由一系列中間件和最終操作來處理。
例如:Logger,Authorization,GZIP,最終操作 DB。
### Crash 處理
Gin 可以 catch 一個發生在 HTTP 請求中的 panic 并 recover 它。這樣,你的服務器將始終可用。例如,你可以向 Sentry 報告這個 panic!
### JSON 驗證
Gin 可以解析并驗證請求的 JSON,例如檢查所需值的存在。
### 路由組
更好地組織路由。是否需要授權,不同的 API 版本...... 此外,這些組可以無限制地嵌套而不會降低性能。
### 錯誤管理
Gin 提供了一種方便的方法來收集 HTTP 請求期間發生的所有錯誤。最終,中間件可以將它們寫入日志文件,數據庫并通過網絡發送。
### 內置渲染
Gin 為 JSON,XML 和 HTML 渲染提供了易于使用的 API。
### 可擴展性
新建一個中間件非常簡單,去查看[示例代碼](https://gin-gonic.com/zh-cn/docs/examples/using-middleware/)吧。
- 介紹
- 快速入門
- 基準測試
- 特性
- Jsoniter
- 示例
- AsciiJSON
- HTML 渲染
- HTTP2 server 推送
- JSONP
- Multipart/Urlencoded 綁定
- Multipart/Urlencoded 表單
- PureJSON
- Query 和 post form
- SecureJSON
- XML/JSON/YAML/ProtoBuf 渲染
- 上傳文件
- 單文件
- 多文件
- 不使用默認的中間件
- 從 reader 讀取數據
- 優雅地重啟或停止
- 使用 BasicAuth 中間件
- 使用 HTTP 方法
- 使用中間件
- 只綁定 url 查詢字符串
- 在中間件中使用 Goroutine
- 多模板
- 如何記錄日志
- 定義路由日志的格式
- 將 request body 綁定到不同的結構體中
- 支持 Let's Encrypt
- 映射查詢字符串或表單參數
- 查詢字符串參數
- 模型綁定和驗證
- 綁定 HTML 復選框
- 綁定 Uri
- 綁定查詢字符串或表單數據
- 綁定表單數據至自定義結構體
- 自定義 HTTP 配置
- 自定義中間件
- 自定義驗證器
- 設置和獲取 Cookie
- 路由參數
- 路由組
- 運行多個服務
- 重定向
- 靜態文件服務
- 靜態資源嵌入
- 測試
- 用戶
- FAQ