下面是自定义中间件的例子
// 自定义中间件,用于记录http访问日志
func logger() gin.HandlerFunc {
return func(c *gin.Context) {
start := time.Now()
// 记录请求前日志
path := c.Request.URL.Path
query := c.Request.URL.RawQuery
log.Printf("Started %s %s", path, query)
// 继续处理请求
c.Next()
// 记录请求后日志
latency := time.Since(start)
log.Printf("Completed %s %v", path, latency)
}
}
r := gin.Default()
// 注册中间件
r.Use(logger())
// 测试API
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})