中间件主要是指可以拦截http请求,对到达请求之前进行一些处理,如数据处理,权限控制,认证等。
r := gin.Default(),默认自带Logger(), Recovery()全局作用了两个中间件。如果不想使用这2个中间件,可以使用r := gin.New()。
中间件写法,返回的是gin.HandlerFunc
func RequestInfos() gin.HandlerFunc {
return func(Context *gin.Context){
path := context.FullPath()
method := context.Request.Method
。。。。
}
}
1、增加全局中间件,这样每个http请求都会先执行RequestInfos()
r.Use(requestInfos())
2、单个路由使用,在访问/benchmark路由时,执行RequestInfos()。
r.GET("/benchmark", requestInfos(), benchEndpoint)
3、在路由组中使用,在访问/test/abc时就会使用中间件
r := gin.Default()
v := r.Group("/test")
v.Use(requestInfos())
{
v.POST("/abc", benchEndpoint)
}
4、如何使中间件在执行完请求后执行
func RequestInfos() gin.HandlerFunc {
return func(context *gin.Context){
path := context.FullPath()
method := context.Request.Method
context.Next()
//后面在请求执行完后执行
}
}