中间件(Middleware)是一种机制,它可以在HTTP请求的生命周期中在主处理程序代码之前或之后运行代码。中间件可以理解为框架的钩子,对所有的请求和响应进行拦截。
iris 使用中间件
通过iris的Use方法就可以将中间件注册到路由上
package main
// 导入包
import "github.com/kataras/iris/v12"
func main() {
// 定义iris实例
app := iris.New()
// 使用gzip压缩中间件
app.Use(iris.Compression)
// 路由设置
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Hello <strong>%s</strong>!", "World")
})
// 监听端口
app.Listen(":8080")
}
iris 自定义中间件
// 自定义中间件函数签名格式
func Logger() iris.Handler {
// 通过闭包返回handler
return func(ctx iris.Context) {
t := time.Now()
// 设置参数
ctx.Values().Set("framework", "iris")
// 请求之前处理逻辑
ctx.Next()
// 请求之后处理逻辑
latency := time.Since(t)
log.Print(latency)
// access the status we are sending
status := ctx.GetStatusCode()
log.Println(status)
}
}
func main() {
app := iris.New()
// 注册自定义的中间件
app.Use(Logger())
app.Get("/test", func(ctx iris.Context) {
// 读取中间件设置的参数
framework := ctx.Values().GetString("framework")
// it would print: "iris"
log.Println(framework)
})
app.Listen(":8080")
}