Sobes.tech
Senior

Kas yra middleware Go HTTP serveriuose ir kaip jis įgyvendinamas?

sobes.tech AI

Atsakymas iš AI

Middleware Go HTTP serveriuose yra funkcija arba funkcijų rinkinys, kurie apvynioja užklausos apdorotoją (http.Handler), kad pridėtų papildomą logiką, pvz., žurnalavimą, autentifikavimą, klaidų tvarkymą ir kt.

Jis įgyvendinamas kaip funkcija, kuri priima http.Handler ir grąžina http.Handler. Pavyzdys:

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) // kviečia kitą apdorotoją
    })
}

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

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

Taip middleware leidžia sekoje apdoroti užklausas, pridedant būtinus funkcinius sluoksnius be pagrindinio apdorotojo keitimo.