Middleware ist ein Mechanismus, der es ermöglicht, Code vor oder nach dem Hauptverarbeitungscode im Lebenszyklus einer HTTP-Anfrage auszuführen. Es kann als eine Art Haken im Framework verstanden werden, der alle Anfragen und Antworten abfängt.

Verwendung von Middleware in Iris

Sie können Middleware für Routen über die Use-Methode in Iris registrieren.

package main

// Paket importieren
import "github.com/kataras/iris/v12"

func main() {
  // Die Iris-Instanz definieren
  app := iris.New()
  // Die Middleware für die Gzip-Komprimierung verwenden
  app.Use(iris.Compression)

  // Routeneinstellungen
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Hallo <strong>%s</strong>!", "Welt")
  })

  // Auf Port lauschen
  app.Listen(":8080")
}

Benutzerdefinierte Middleware in Iris

// Signatur der benutzerdefinierten Middleware-Funktion
func Logger() iris.Handler {
    // Den Handler über Closure zurückgeben
    return func(ctx iris.Context) {
        t := time.Now()

        // Parameter setzen
        ctx.Values().Set("framework", "iris")

        // Logik vor der Anfrage

        ctx.Next()

        // Logik nach der Anfrage
        Latenzzeit := time.Since(t)
        log.Print(Latenzzeit)

        // Auf den gesendeten Status zugreifen
        Status := ctx.GetStatusCode()
        log.Println(Status)
    }
}

func main() {
    app := iris.New()
    // Die benutzerdefinierte Middleware registrieren
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // Den von der Middleware gesetzten Parameter lesen
        Framework := ctx.Values().GetString("framework")

        // Es wird ausgegeben: "iris"
        log.Println(Framework)
    })

    app.Listen(":8080")
}