Il middleware è un meccanismo che consente al codice di essere eseguito prima o dopo il codice di gestione principale nel ciclo di vita di una richiesta HTTP. Può essere inteso come un'ancoraggio nel framework che intercetta tutte le richieste e le risposte.

Utilizzo del middleware in iris

È possibile registrare il middleware alle route attraverso il metodo Use in iris.

package main

// Importa il pacchetto
import "github.com/kataras/iris/v12"

func main() {
  // Definisci l'istanza di iris
  app := iris.New()
  // Usa il middleware di compressione gzip
  app.Use(iris.Compression)

  // Impostazioni della route
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Ciao <strong>%s</strong>!", "Mondo")
  })

  // In ascolto sulla porta
  app.Listen(":8080")
}

Middleware personalizzato in iris

// Firma della funzione middleware personalizzata
func Logger() iris.Handler {
    // Restituisci l'handler tramite chiusura
    return func(ctx iris.Context) {
        t := time.Now()

        // Imposta i parametri
        ctx.Values().Set("framework", "iris")

        // Logica prima della richiesta

        ctx.Next()

        // Logica dopo la richiesta
        latenza := time.Since(t)
        log.Print(latenza)

        // Accedi allo stato inviato
        stato := ctx.GetStatusCode()
        log.Println(stato)
    }
}

func main() {
    app := iris.New()
    // Registra il middleware personalizzato
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // Leggi il parametro impostato dal middleware
        framework := ctx.Values().GetString("framework")

        // Stampa: "iris"
        log.Println(framework)
    })

    app.Listen(":8080")
}