Sobes.tech
Senior

Kas ir middleware Go HTTP serveros un kā tas tiek īstenots?

sobes.tech AI

Atbilde no AI

Middleware Go HTTP serveros ir ir funkcija vai funkciju kopums, kas ietver pieprasījuma apstrādātāju (http.Handler), lai pievienotu papildu loģiku, piemēram, reģistrēšanu, autentifikāciju, kļūdu apstrādi utt.

To realizē kā funkciju, kas pieņem http.Handler un atgriež http.Handler. Piemērs:

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) // izsauc nākamo apstrādātāju
    })
}

// Izmantošana
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello"))
})

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

Tādējādi middleware ļauj secīgi apstrādāt pieprasījumus, pievienojot nepieciešamās funkcijas slāņus bez galvenā apstrādātāja maiņas.