中间件

未匹配的标注

不使用中间件

app := iris.New()
// 替换

// 默认自带Logger 与 Recovery中间件
app := iris.Default()

使用中间件

注意 本例中出现了应用中间件与路由分组中间件,其理念与laravel中间件一致

import (
    "github.com/kataras/iris"

    "github.com/kataras/iris/middleware/recover"
    "github.com/kataras/iris/middleware/logger"
)

func main() {
    // 创建一个不使用默认中间件的应用实例
    app := iris.New()

    // recover 中间件从任何异常中恢复,如果有异常,则写入500状态码(服务器内部错误)。
    app.Use(recover.New())

    requestLogger := logger.New(logger.Config{
        // 是否开启状态码
        Status: true,
        // 是否记录远程IP地址
        IP: true,
        // 是否呈现HTTP谓词
        Method: true,
        // 是否记录请求路径
        Path: true,
        // 是否开启查询追加
        Query: true,

        // 若为空则从 `ctx.Values().Get("logger_message") 获取内容
        // 在其中添加日志
        MessageContextKeys: []string{"logger_message"},

        // 为空则从 `ctx.GetHeader("User-Agent") 获取头信息
        MessageHeaderKeys: []string{"User-Agent"},
    })
    app.Use(requestLogger)

    // 每个路由,您可以添加任意数量的中间件
    app.Get("/benchmark", MyBenchLogger(), benchEndpoint)

    // 授权分组路由 /user.
    // authorized := app.Party("/user", AuthRequired())
    // 完全等价
    authorized := app.Party("/user")
    // 在本例中使用自定义中间件AuthRequired(),作为分组中间件,仅用在授权过的分组/party.
    authorized.Use(AuthRequired())
    {
        authorized.Post("/login", loginEndpoint)
        authorized.Post("/submit", submitEndpoint)
        authorized.Post("/read", readEndpoint)

        // nested group: /user/testing
        testing := authorized.Party("/testing")
        testing.Get("/analytics", analyticsEndpoint)
    }

    // 监听服务 http://0.0.0.0:8080
    app.Run(iris.Addr(":8080"))
}

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

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


暂无话题~