package main
import (
"github.com/gin-gonic/gin"
"log"
"net/http"
"time"
)
//中间件就是一个钩子函数
func StatCost() gin.HandlerFunc{
return func(c *gin.Context) {
t := time.Now()
//设置公共参数
c.Set("username","test")
//等其他中间件先执行
c.Next() //其他中间件执行完,这里在返回
//获取耗时
latency := time.Since(t)
log.Printf("user time: %d us\n",latency)
}
}
func main() {
//e := gin.New() //这种方式新创建(路由引擎)没有加载任何中间件
e := gin.Default() //默认加载了日志打包和错误中间件
e.Use(StatCost()) //加载自定义的中间件
e.GET("/test", func(c *gin.Context) {
username := c.MustGet("username").(string)
log.Println("username",username)
c.JSON(http.StatusOK,gin.H{
"status":"success",
"username":username,
})
})
e.Run(":9090")
}
gin自定义一个中间并加载使用它
最新推荐文章于 2025-01-29 23:22:11 发布
本文介绍使用Gin框架实现自定义中间件的过程,通过一个示例展示了如何记录请求耗时,并将公共参数注入到上下文中,为后续的业务处理提供便利。
2845

被折叠的 条评论
为什么被折叠?



