Middleware là một cơ chế cho phép mã chạy trước hoặc sau mã xử lý chính trong vòng đời của một yêu cầu HTTP. Nó có thể được hiểu như là một kẽm trong framework chặn tất cả các yêu cầu và phản hồi.

Sử dụng Middleware trong iris

Bạn có thể đăng ký middleware vào các route thông qua phương thức Use trong iris.

package main

// Import package
import "github.com/kataras/iris/v12"

func main() {
  // Xác định phiên bản iris
  app := iris.New()

  // Sử dụng middleware nén gzip
  app.Use(iris.Compression)

  // Cài đặt route
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Xin chào <strong>%s</strong>!", "Thế giới")
  })

  // Lắng nghe trên cổng
  app.Listen(":8080")
}

Middleware tùy chỉnh trong iris

// Chữ ký chức năng middleware tùy chỉnh
func Logger() iris.Handler {
    // Trả về trình xử lý thông qua closure
    return func(ctx iris.Context) {
        t := time.Now()

        // Đặt tham số
        ctx.Values().Set("framework", "iris")

        // Logic trước yêu cầu

        ctx.Next()

        // Logic sau yêu cầu
        latency := time.Since(t)
        log.Print(latency)

        // Truy cập vào trạng thái đang gửi
        status := ctx.GetStatusCode()
        log.Println(status)
    }
}

func main() {
    app := iris.New()
    // Đăng ký middleware tùy chỉnh
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // Đọc tham số được đặt bởi middleware
        framework := ctx.Values().GetString("framework")

        // Sẽ in ra: "iris"
        log.Println(framework)
    })

    app.Listen(":8080")
}