gin中间件

gin中间件

gin的中间件是一个gin.HandleFunc类型

配置路由的时候可以传递多个 func 回调函数,最后一个 func 回调函数前面触发的方法都可以称为中间件。

r.GET("/",func1(ctx *gin.Context){
    
},func2(ctx *gin.Context){
    
},func(ctx *gin.Context){
	ctx.String(200,"ok")
})
这里的func1和func2被当作中间件使用,路由匹配前执行的操作。
也可以把中间件抽离出来,单独放到一个函数内。

中间件里面加上 ctx.Next()可以让我们在路由匹配完成后执行一些操作

func MiddleWare(ctx *gin.Context){
	fmt.Println("路由匹配前的操作")
	ctx.Next()
	fmt.Println(“路由匹配后的操作”)
}

中间件的执行顺序

request1  request2  程序主体函数   response2  response1

全局中间件 使用r.Use()

r :=  gin.Default()
r.Use(Middle1,Middle2)

路由分组中使用中间件

方法1
 shopGroup := r.Group("/shop", Middle1())
方法2
shopGroup := r.Group("/shop")
shopGroup.Use(Middle1())

中间件传值

在中间件函数中设置值
ctx.Set("username","zs")
对应路由函数中获取
u,_ :=ctx.Get("username")

注意事项

gin.Default()默认使用Logger和Recovery两个中间件,如不想使用可使用gin.New()

Logger中间件将日志写入到gin.DefaultWriter

Recovery中间件会recover任何panic


gin中间件
http://www.jcwit.com/article/508/
作者
Carlos
发布于
2024年4月9日
许可协议