package main import ( "fmt" "github.com/gin-gonic/gin" "time" ) //定义一个GIN中间件 func middleware() gin.HandlerFunc { return func(c *gin.Context) { t1 := time.Now() fmt.Println("中间件开始执行了") //设置变量到context的key中,可以通过GET取到 c.Set("request", "中间件") //执行函数 拦截handler c.Next() status := c.Writer.Status() fmt.Println("中间件执行完毕", status) t2 := time.Since(t1) fmt.Println("time: ", t2) } } func main() { //1.创建路由 r := gin.Default() //注册中间件 r.Use(middleware()) //{}是为了代码规范 { r.GET("/middleware", func(c *gin.Context) { //取值 req, _ := c.Get("request") fmt.Println("req:", req) //页面接收 c.JSON(200, gin.H{"request": req}) }) //跟路由后面是定义的局部中间件 r.GET("/middleware2", middleware(), func(c *gin.Context) { //取值 req, _ := c.Get("request") fmt.Println("req:", req) //页面接收 c.JSON(200, gin.H{"request": req}) }) } r.Run(":8000") }