Sobes.tech
Senior

Co je to middleware v Go HTTP serverech a jak je implementováno?

sobes.tech AI

Odpověď od AI

Middleware v Go HTTP serverech je funkce nebo sada funkcí, které obalují obslužníka požadavků (http.Handler), aby přidaly další logiku, například zaznamenávání, autentizaci, zpracování chyb atd.

Implementuje se jako funkce, která přijímá http.Handler a vrací http.Handler. Příklad:

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) // volá dalšího obslužníka
    })
}

// Použití
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello"))
})

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

Tímto způsobem middleware umožňuje sekvenční zpracování požadavků, přidáváním potřebných funkčních vrstev bez změny hlavního obslužníka.