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/