Middleware é um mecanismo que permite que o código seja executado antes ou depois do código principal no ciclo de vida de uma solicitação HTTP. Pode ser entendido como um gancho no framework que intercepta todas as solicitações e respostas.
Utilizando Middleware no iris
Você pode registrar middleware para rotas através do método Use
no iris.
package main
// Importe o pacote
import "github.com/kataras/iris/v12"
func main() {
// Defina a instância do iris
app := iris.New()
// Use o middleware de compressão gzip
app.Use(iris.Compression)
// Configurações da rota
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Olá <strong>%s</strong>!", "Mundo")
})
// Escute na porta
app.Listen(":8080")
}
Middleware Personalizado no iris
// Assinatura da função de middleware personalizado
func Logger() iris.Handler {
// Retorna o manipulador através de um closure
return func(ctx iris.Context) {
t := time.Now()
// Define parâmetros
ctx.Values().Set("framework", "iris")
// Lógica antes da solicitação
ctx.Next()
// Lógica após a solicitação
latency := time.Since(t)
log.Print(latency)
// Acesse o status sendo enviado
status := ctx.GetStatusCode()
log.Println(status)
}
}
func main() {
app := iris.New()
// Registre o middleware personalizado
app.Use(Logger())
app.Get("/test", func(ctx iris.Context) {
// Leia o parâmetro definido pelo middleware
framework := ctx.Values().GetString("framework")
// Isso imprimiria: "iris"
log.Println(framework)
})
app.Listen(":8080")
}