### Gin 框架
Gin 是 Go 語言中一個高性能的 Web 框架,專為構建高效、可擴展的 Web 應用和 RESTful API 而設計。它以極簡的 API 和快速的性能受到廣泛歡迎。
#### 特性
- **高性能**:Gin 使用了基于 Radix 樹的路由,能夠快速處理請求。
- **中間件支持**:Gin 提供了靈活的中間件機制,可以在請求處理的任意階段插入自定義邏輯。
- **JSON 驗證**:支持結構體綁定和 JSON 驗證,簡化數據處理。
- **易于使用**:簡單直觀的 API,適合快速開發和上手。
### 官方文檔
有關更多詳細信息,請訪問 [Gin 官方文檔](https://gin-gonic.com/zh-cn/docs/).
#### 安裝
使用 Go Modules 安裝 Gin:
```bash
go get -u github.com/gin-gonic/gin
```
#### 基本用法示例
以下是使用 Gin 創建一個簡單 Web 應用的示例:
```go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
// 創建 Gin 路由器
r := gin.Default()
// 定義一個 GET 路由
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Hello, World!",
})
})
// 啟動服務器
r.Run(":8080") // 默認監聽 :8080
}
```
#### 中間件示例
Gin 支持使用中間件來擴展應用功能。以下是一個日志中間件的示例:
```go
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
// 處理請求前
log.Printf("Request: %s %s", c.Request.Method, c.Request.URL)
c.Next() // 繼續處理請求
// 處理請求后
log.Printf("Response: %d", c.Writer.Status())
}
}
// 在主函數中注冊中間件
r.Use(Logger())
```
#### 結構體綁定和驗證
Gin 允許將請求的 JSON 數據直接綁定到結構體,并進行驗證。例如:
```go
type User struct {
Name string `json:"name" binding:"required"`
Age int `json:"age" binding:"gte=0"`
}
r.POST("/user", func(c *gin.Context) {
var user User
if err := c.ShouldBindJSON(&user); err != nil {
c.JSON(400, gin.H{"error": err.Error()})
return
}
c.JSON(200, user)
})
```