Sobes.tech
Senior

Čo je middleware v Go HTTP serveroch a ako sa implementuje?

sobes.tech AI

Odpoveď od AI

Middleware v Go HTTP serveroch je funkcia alebo súbor funkcií, ktoré obalujú spracovateľa požiadaviek (http.Handler) na pridanie ďalšej logiky, ako je zaznamenávanie, overovanie, spracovanie chýb atď.

Implementuje sa ako funkcia, ktorá prijíma http.Handler a vracia http.Handler. Prí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á ďalší spracovateľ
    })
}

// Použitie
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 spôsobom middleware umožňuje sekvenčné spracovanie požiadaviek, pridávaním potrebných funkčných vrstiev bez zmeny hlavného spracovateľa.