Sobes.tech
Назад к вопросам
Senior
3

What is middleware in Go HTTP servers and how is it implemented?

Компании, где спрашивали
AndersenAndersen

Ответ от нейросети

sobes.tech AI

Middleware в Go HTTP-серверах — это функция или набор функций, которые оборачивают обработчик запроса (http.Handler) для добавления дополнительной логики, например, логирования, аутентификации, обработки ошибок и т.д.

Реализуется middleware как функция, принимающая http.Handler и возвращающая http.Handler. Пример:

func loggingMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        log.Printf("Request: %s %s", r.Method, r.URL.Path)
        next.ServeHTTP(w, r) // вызов следующего обработчика
    })
}

// Использование
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello"))
})

loggedMux := loggingMiddleware(mux)
http.ListenAndServe(":8080", loggedMux)

Таким образом middleware позволяет последовательно обрабатывать запросы, добавляя нужные функциональные слои без изменения основного обработчика.