El middleware es un mecanismo que permite que el código se ejecute antes o después del código principal de manejo en el ciclo de vida de una solicitud HTTP. Se puede entender como un gancho en el marco que intercepta todas las solicitudes y respuestas.

Uso de Middleware en Iris

Puede registrar middleware en rutas a través del método Use en iris.

paquete principal

// Importar el paquete
import "github.com/kataras/iris/v12"

func main() {
  // Definir la instancia de iris
  app := iris.New()
  // Usar el middleware de compresión gzip
  app.Use(iris.Compression)

  // Configuración de ruta
  app.Get("/", func(ctx iris.Context) {
    ctx.HTML("¡Hola <strong>%s</strong>!", "Mundo")
  })

  // Escuchar en el puerto
  app.Listen(":8080")
}

Middleware personalizado en iris

// Firma de función de middleware personalizado
func Logger() iris.Handler {
    // Devolver el manejador a través de un cierre
    return func(ctx iris.Context) {
        t := time.Now()

        // Establecer parámetros
        ctx.Values().Set("framework", "iris")

        // Lógica antes de la solicitud

        ctx.Next()

        // Lógica después de la solicitud
        latencia := time.Since(t)
        log.Print(latencia)

        // Acceder al estado enviado
        estado := ctx.GetStatusCode()
        log.Println(estado)
    }
}

func main() {
    app := iris.New()
    // Registrar el middleware personalizado
    app.Use(Logger())

    app.Get("/test", func(ctx iris.Context) {
        // Leer el parámetro establecido por el middleware
        framework := ctx.Values().GetString("framework")

        // Imprimirá: "iris"
        log.Println(framework)
    })

    app.Listen(":8080")
}