文件
Gin 是一個用 Go 撰寫的高效能 HTTP Web 框架。它提供類似 Martini 的 API,但效能顯著提升——得益於 httprouter,速度快上 40 倍。Gin 專為建構 REST API、Web 應用程式和微服務而設計,兼顧速度與開發者生產力。
為什麼選擇 Gin?
Gin 結合了 Express.js 風格路由的簡潔性與 Go 的效能特性,非常適合:
- 建構高吞吐量的 REST API
- 開發需要處理大量並發請求的微服務
- 建立需要快速回應時間的 Web 應用程式
- 以最少的樣板程式碼快速開發 Web 服務原型
Gin 的主要特點:
- 零記憶體配置路由器 - 極高記憶體效率的路由,不產生堆積記憶體配置
- 高效能 - 基準測試顯示其速度優於其他 Go Web 框架
- 中介軟體支援 - 可擴充的中介軟體系統,支援身份驗證、日誌記錄、CORS 等
- 不會當機 - 內建恢復中介軟體,防止 panic 導致伺服器崩潰
- JSON 驗證 - 自動請求/回應 JSON 綁定與驗證
- 路由分組 - 組織相關路由並套用共用中介軟體
- 錯誤管理 - 集中式錯誤處理與日誌記錄
- 內建渲染 - 支援 JSON、XML、HTML 模板等多種格式
- 可擴充 - 龐大的社群中介軟體與外掛生態系統
開始使用
先決條件
安裝
透過 Go 的模組支援,只需在程式碼中匯入 Gin,Go 將在建構時自動下載:
import "github.com/gin-gonic/gin"你的第一個 Gin 應用程式
以下是一個展示 Gin 簡潔性的完整範例:
package main
import ( "net/http"
"github.com/gin-gonic/gin")
func main() { // Create a Gin router with default middleware (logger and recovery) r := gin.Default()
// Define a simple GET endpoint r.GET("/ping", func(c *gin.Context) { // Return JSON response c.JSON(http.StatusOK, gin.H{ "message": "pong", }) })
// Start server on port 8080 (default) // Server will listen on 0.0.0.0:8080 (localhost:8080 on Windows) r.Run()}執行應用程式:
-
將上述程式碼儲存為
main.go -
執行應用程式:
Terminal window go run main.go -
開啟瀏覽器並造訪
http://localhost:8080/ping -
你應該會看到:
{"message":"pong"}
此範例展示了:
- 使用預設中介軟體建立 Gin 路由器
- 使用簡單的處理函式定義 HTTP 端點
- 回傳 JSON 回應
- 啟動 HTTP 伺服器
下一步
在執行完你的第一個 Gin 應用程式後,可以探索以下資源來深入學習:
學習資源
- Gin 快速入門指南 - 包含 API 範例和建構配置的完整教學
- 範例儲存庫 - 展示各種 Gin 使用情境的即用範例:
- REST API 開發
- 身份驗證與中介軟體
- 檔案上傳與下載
- WebSocket 連線
- 模板渲染
官方教學
中介軟體生態系統
Gin 擁有豐富的中介軟體生態系統,滿足常見的 Web 開發需求。探索社群貢獻的中介軟體:
-
gin-contrib - 官方中介軟體集合,包括:
- 身份驗證(JWT、Basic Auth、Sessions)
- CORS、速率限制、壓縮
- 日誌記錄、指標監控、鏈路追蹤
- 靜態檔案服務、模板引擎
-
gin-gonic/contrib - 額外的社群中介軟體