类似与拦截器
全局中间件
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func MidddleWare() gin.HandlerFunc{
return func(c *gin.Context) {
fmt.Println("中间件开始执行了")
//设置变量到context中,可以通过Get取
c.Set("request","中间件")
//执行中间件
c.Next()
//写出一下,handlerfunc执行完毕后执行下面的代码
status:=c.Writer.Status()
fmt.Println("执行中间件完毕",status)
}
}
func main() {
//1.创建路由
r := gin.Default()
//注册中间件
r.Use(MidddleWare())
{//有中间件时要放到{}里面,为了代码规范
r.GET("/long_async", func(c *gin.Context) {
//取值
req,_:=c.Get("request")
fmt.Println(req)
c.JSON(200,gin.H{"request":req})
})
}
//3.监听端口,默认是8080
r.Run(":8000") // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
局部中间件
//第二个参数是中间件
r.GET("/long_async",MidddleWare(), func(c *gin.Context) {
//取值
req,_:=c.Get("request")
fmt.Println(req)
c.JSON(200,gin.H{"request":req})
fmt.Println("==========================")
})