中间件
介绍
中间件提供了一种方便的机制来检查和过滤进入应用程序的 HTTP 请求。 所有这些中间件都位于 app/http/middleware.go
文件里 。
定义中间件
中间件只是一个函数,只要符合gin
的中间件规则即可, 即实现接口 type HandlerFunc func(*Context)
。
func TestDump() gin.HandlerFunc {
return func(c *gin.Context) {
fmt.Println("hello word")
// 处理请求
c.Next()
}
}
对中间件分组
中间件分为两种,一是全局中间件,二是分组中间件;其中全局中间件是默认启用,并且所有路由生效;分组中间件必须在route_provider.go
挂在具体路由分组才生效。
package http
import (
"github.com/gin-gonic/gin"
"github.com/go-home-admin/home/bootstrap/constraint"
"github.com/go-home-admin/home/bootstrap/servers"
)
// Kernel @Bean
type Kernel struct {
*servers.Http `inject:""`
}
func (k *Kernel) Init() {
// 全局中间件
k.Middleware = []gin.HandlerFunc{
gin.Logger(),
gin.Recovery(),
}
// 分组中间件, 在路由提供者中自行设置
k.MiddlewareGroup = map[string][]gin.HandlerFunc{
"admin": {
Cors(),
},
"api": {
TestDump(),
},
}
}
// GetServer 提供统一命名规范的独立服务
func GetServer() constraint.KernelServer {
return NewKernel()
}
这里中间件分组名称为api
的分组使用了TestDump()
函数。还需要在route_provider.go
新增代码, 对所有api分组路由
使用api分组中间件
a.Group("api").Middleware("api")