Sobes.tech
Senior

O que é middleware em servidores HTTP Go e como é implementado?

sobes.tech IA

Resposta da IA

O middleware em servidores HTTP Go é uma função ou conjunto de funções que envolvem o manipulador de requisições (http.Handler) para adicionar lógica adicional, como logging, autenticação, tratamento de erros, etc.

Implementa-se como uma função que aceita um http.Handler e retorna um http.Handler. Exemplo:

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) // chama o próximo manipulador
    })
}

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

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

Assim, o middleware permite processar as requisições de forma sequencial, adicionando camadas funcionais necessárias sem alterar o manipulador principal.