Middleware to mechanizm, który pozwala na uruchomienie kodu przed lub po głównym kodzie obsługi w cyklu życia żądania HTTP. Może być on rozumiany jako haczyk w ramach frameworka przechwytujący wszystkie żądania i odpowiedzi.
Korzystanie z Middleware w iris
Można zarejestrować middleware do tras za pomocą metody Use
w iris.
package main
// Importowanie pakietu
import "github.com/kataras/iris/v12"
func main() {
// Definiowanie instancji iris
app := iris.New()
// Użycie middleware kompresji gzip
app.Use(iris.Compression)
// Ustawienia trasy
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Witaj <strong>%s</strong>!", "Świecie")
})
// Nasłuchiwanie na porcie
app.Listen(":8080")
}
Własny middleware w iris
// Sygnatura funkcji niestandardowego middleware
func Logger() iris.Handler {
// Zwracanie handlera poprzez zamknięcie
return func(ctx iris.Context) {
t := time.Now()
// Ustawianie parametrów
ctx.Values().Set("framework", "iris")
// Logika przed żądaniem
ctx.Next()
// Logika po żądaniu
czasOczekiwania := time.Since(t)
log.Print(czasOczekiwania)
// Dostęp do wysłanego statusu
status := ctx.GetStatusCode()
log.Println(status)
}
}
func main() {
app := iris.New()
// Rejestrowanie niestandardowego middleware
app.Use(Logger())
app.Get("/test", func(ctx iris.Context) {
// Odczytywanie parametru ustawionego przez middleware
framework := ctx.Values().GetString("framework")
// Wydrukowałoby: "iris"
log.Println(framework)
})
app.Listen(":8080")
}