中间件
不使用中间件
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"))
}