Gin中间件函数原理
Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建Web应用。Gin中间件(Middleware)是一种封装的方法,用于在HTTP请求到达目标处理器之前或之后执行一些特定的操作。
Gin中间件的函数原型如下:
func MiddlewareFunction(c *gin.Context) {
// 在这里写你的逻辑
// 调用下一个中间件或路由处理器
c.Next()
// 在这里可以处理c.Next()调用之后的逻辑
}
使用中间件的方法:
r := gin.Default() // 创建一个Gin引擎
// 使用中间件
r.Use(MiddlewareFunction)
// 你的路由和处理器
r.GET("/", SomeHandler)
// 启动服务器
r.Run()
下面是一个简单的中间件示例,它用于记录每个请求的执行时间:
package main
import (
"time"
"github.com/gin-gonic/gin"
)
func Logger() gin.HandlerFunc {
return func(c *gin.Context) {
start := time.Now()
// before request
c.Next() // 处理请求
// after request
latency := time.Since(start)
path := c.Request.URL.Path
status := c.Writer.Status()
// 日志格式:时间 | 方法 | 路径 | 状态码 | 响应时间
log.Printf("%s %s %s %d %s\n", start.Format("2006/01/02 - 15:04:05"), c.Request.Method, path, status, latency)
}
}
func main() {
r := gin.Default()
r.Use(Logger())
r.GET("/", func(c *gin.Context) {
c.String(200, "Hello world!")
})
r.Run() // 在 0.0.0.0:8080 上启动服务
}
在这个例子中,Logger中间件记录了每个请求的开始时间、方法、路径、状态码和响应时间。它使用c.Next()
来调用下一个中间件或路由处理器,并在处理完成后记录日志。
评论已关闭