Sobes.tech
Senior

Šta je middleware u Go HTTP serverima i kako se implementira?

sobes.tech АИ

Одговор од АИ

Middleware u Go HTTP serverima je funkcija ili skup funkcija koje obavijaju obradu zahtjeva (http.Handler) radi dodavanja dodatne logike, poput zapisivanja, autentifikacije, obrade pogrešaka itd.

Implementira se kao funkcija koja prima http.Handler i vraća http.Handler. Primjer:

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) // poziva sljedeći handler
    })
}

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

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

Na ovaj način, middleware omogućava sekvencijalnu obradu zahtjeva, dodavanjem potrebnih funkcionalnih slojeva bez izmjene glavnog handlera.