Middleware adalah mekanisme yang memungkinkan kode dijalankan sebelum atau sesudah kode penanganan utama dalam siklus hidup permintaan HTTP. Ini dapat dipahami sebagai sebuah hook dalam kerangka kerja yang menangkap semua permintaan dan tanggapan.

Menggunakan Middleware di iris

Anda dapat mendaftarkan middleware ke rute melalui metode Use di iris.

package main

// Impor paket
import "github.com/kataras/iris/v12"

func main() {
  // Tentukan instansi iris
  app := iris.New()
  // Gunakan middleware kompresi gzip
  app.Use(iris.Compression)

  // Pengaturan rute
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Hello <strong>%s</strong>!", "Dunia")
  })

  // Dengarkan pada port
  app.Listen(":8080")
}

Middleware Kustom di iris

// Tanda tangan fungsi middleware kustom
func Logger() iris.Handler {
    // Kembalikan handler melalui closure
    return func(ctx iris.Context) {
        t := time.Now()

        // Atur parameter
        ctx.Values().Set("framework", "iris")

        // Logika sebelum permintaan

        ctx.Next()

        // Logika setelah permintaan
        latency := time.Since(t)
        log.Print(latency)

        // Akses status yang dikirim
        status := ctx.GetStatusCode()
        log.Println(status)
    }
}

func main() {
    app := iris.New()
    // Daftarkan middleware kustom
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // Baca parameter yang diatur oleh middleware
        framework := ctx.Values().GetString("framework")

        // Ini akan mencetak: "iris"
        log.Println(framework)
    })

    app.Listen(":8080")
}