一架梯子,一头程序猿,仰望星空!
Iris Web框架教程 > 内容正文

Go Iris中间件


中间件(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")
}