中间件是一个固定的函数签名,日后也许会有所调整,函数通过返回一个 bool 来判断是否执行下一个中间件。

type Middleware func(Ctx) bool

全局中间件

直接调用 Use 方法即可

package main

import (
    "fmt"
    "gitee.com/aurora-engine/aurora"
)

func Before() aurora.Middleware {
    return func(ctx aurora.Ctx) bool {
        fmt.Println("before")
        return true
    }
}

func main() {
    a := aurora.NewAurora()
    a.Use(Before())
    a.Get("/", func()  {

    })
    aurora.Run(a)
}

局部中间件

在注册函数的最后一个参数是一个可变参数,能给一个接口配置多个中间件

a.Get("/", func() {}, Before())

结构体中间件

结构体中间件,是作用在当前结构体的所有函数上面,不支持指定到具体某个函数上,如果需要特殊处理,还是选择函数模式。

a.Url("/", &TestServer{}, Before())

中间件处理中断

某个中间件如果逻辑处理失败,我们需要正常的对客户端做出响应,通过 aurora.Ctxfunc (c Ctx) Return(value ...interface{}) 来完成。

最后编辑: kuteng  文档更新时间: 2022-07-29 09:12   作者:kuteng