### Web 框架
在 Golang 中,Web 框架用于簡化構建 Web 應用和 RESTful API 的過程。通過使用 Web 框架,開發者可以快速處理路由、請求和響應,同時提高代碼的可維護性。
### **Go Web 框架排行榜**
[Github最新排行](https://github.com/search?o=desc&q=web+framework+stars%3A%3E1000+language%3Ago&s=stars&type=Repositories)

#### 常用 Web 框架
1. **Gin**
- Gin 是一個高性能的 Web 框架,具有極簡的 API 設計和良好的性能。
- 特點:
- 快速的路由處理
- 中間件支持
- JSON 驗證和序列化
- GitHub 地址:[Gin](https://github.com/gin-gonic/gin)
2. **Echo**
- Echo 是一個功能豐富的 Web 框架,注重性能和易用性。
- 特點:
- 靈活的路由
- 中間件支持
- 支持數據綁定和驗證
- GitHub 地址:[Echo](https://github.com/labstack/echo)
#### 基本操作示例
以下是使用 Gin 創建簡單 Web 應用的示例:
```go
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
// 創建一個 Gin 路由器
r := gin.Default()
// 定義路由
r.GET("/hello", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "Hello, World!",
})
})
// 啟動服務器
r.Run(":8080") // 默認監聽 :8080
}
```
#### 中間件示例
Gin 和 Echo 都支持中間件,可以用于請求處理的前置和后置操作。以下是一個簡單的日志中間件示例:
```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())
```