中间件
介绍
中间件提供了一种方便的机制来检查和过滤进入应用程序的 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") 
           GO 全栈框架封装
GO 全栈框架封装 
         
             
             关于 LearnKu
                关于 LearnKu
               
                     
                     
                     粤公网安备 44030502004330号
 粤公网安备 44030502004330号 
 
推荐文章: