Middleware - это механизм, который позволяет выполнять код до или после основного обработчика в жизненном цикле HTTP-запроса. Его можно понимать как крюк во фреймворке, перехватывающий все запросы и ответы.
Использование Middleware в iris
Вы можете зарегистрировать middleware для маршрутов через метод Use
в iris.
package main
// Импорт пакета
import "github.com/kataras/iris/v12"
func main() {
// Определение экземпляра iris
app := iris.New()
// Использование middleware сжатия gzip
app.Use(iris.Compression)
// Настройки маршрута
app.Get("/", func(ctx iris.Context) {
ctx.HTML("Привет <strong>%s</strong>!", "Мир")
})
// Прослушивание порта
app.Listen(":8080")
}
Пользовательский Middleware в iris
// Подпись пользовательской функции middleware
func Logger() iris.Handler {
// Возвращение обработчика через замыкание
return func(ctx iris.Context) {
t := time.Now()
// Установка параметров
ctx.Values().Set("framework", "iris")
// Логика перед запросом
ctx.Next()
// Логика после запроса
latency := time.Since(t)
log.Print(latency)
// Доступ к отправляемому статусу
status := ctx.GetStatusCode()
log.Println(status)
}
}
func main() {
app := iris.New()
// Регистрация пользовательского middleware
app.Use(Logger())
app.Get("/test", func(ctx iris.Context) {
// Чтение параметра, установленного middleware
framework := ctx.Values().GetString("framework")
// Это выведет: "iris"
log.Println(framework)
})
app.Listen(":8080")
}