Les middlewares sont des mécanismes qui permettent à du code de s'exécuter avant ou après le code de traitement principal dans le cycle de vie d'une requête HTTP. On peut les comprendre comme des crochets dans le framework interceptant toutes les requêtes et réponses.

Utilisation des middlewares dans Iris

Vous pouvez enregistrer des middlewares pour des routes via la méthode Use dans Iris.

package main

// Importer le package
import "github.com/kataras/iris/v12"

func main() {
  // Définir l'instance d'Iris
  app := iris.New()
  // Utiliser le middleware de compression gzip
  app.Use(iris.Compression)

  // Paramètres de la route
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("Bonjour <strong>%s</strong>!", "World")
  })

  // Écouter sur le port
  app.Listen(":8080")
}

Middleware personnalisé dans Iris

// Signature de la fonction du middleware personnalisé
func Logger() iris.Handler {
    // Renvoyer le gestionnaire via une fermeture
    return func(ctx iris.Context) {
        t := time.Now()

        // Définir les paramètres
        ctx.Values().Set("framework", "iris")

        // Logique avant la requête

        ctx.Next()

        // Logique après la requête
        latence := time.Since(t)
        log.Print(latence)

        // Accéder au statut envoyé
        statut := ctx.GetStatusCode()
        log.Println(statut)
    }
}

func main() {
    app := iris.New()
    // Enregistrer le middleware personnalisé
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // Lire le paramètre défini par le middleware
        framework := ctx.Values().GetString("framework")

        // Il afficherait : "iris"
        log.Println(framework)
    })

    app.Listen(":8080")
}