Gin框架
约 329 字大约 1 分钟
2025-05-31
1.前言
Gin 的特点:
- 快速:基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能
- 支持中间件:传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB
- 路由组:更好地组织路由。是否需要授权,不同的 API 版本
2.安装 Gin
- 下载并安装 gin
go get -u github.com/gin-gonic/gin
- 引用 gin
import "github.com/gin-gonic/gin"
- 使用 gin ,创建并运行 example.go 文件
package main
import "github.com/gin-gonic/gin"
func main() {
router := gin.Default()
router.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
router.Run() // 监听并在 0.0.0.0:8080 上启动服务,默认监听的端口:8080
}
3.路由组
- 使用 router.Group 方式实现路由分组
- 应用:API 多版本
func main() {
router := gin.Default()
// 简单的路由组: v1
{
v1 := router.Group("/v1")
v1.POST("/login", loginEndpoint)
v1.POST("/submit", submitEndpoint)
v1.POST("/read", readEndpoint)
}
// 简单的路由组: v2
{
v2 := router.Group("/v2")
v2.POST("/login", loginEndpoint)
v2.POST("/submit", submitEndpoint)
v2.POST("/read", readEndpoint)
}
router.Run(":8080")
}
4.自定义 HTTP 配置
两种方式实现:http.ListenAndServe() 、或者指定 Server 参数
import "net/http"
func main() {
router := gin.Default()
http.ListenAndServe(":8080", router)
}
或者:
import "net/http"
func main() {
router := gin.Default()
s := &http.Server{
Addr: ":8080",
Handler: router,
ReadTimeout: 10 * time.Second,
WriteTimeout: 10 * time.Second,
MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()
}