中间件

未匹配的标注

介绍

中间件提供了一种方便的机制来检查和过滤进入应用程序的 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")

项目地址 通用工具

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~