Интерфейс http.Handler и цепочки middleware в Go.

Ответ

Handler обрабатывает запрос: ServeHTTP(w, r). Middleware - функция func(http.Handler) http.Handler: оборачивает следующий handler (логирование, auth, recovery). Цепочка: h = middleware1(middleware2(finalHandler)). В Go типично передавать next в замыкание и вызывать next.ServeHTTP(w, r) после проверок. Альтернатива - chi, echo с встроенным middleware.

func logging(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        log.Println(r.URL.Path)
        next.ServeHTTP(w, r)
    })
}
mux := logging(http.DefaultServeMux)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.