Sobes.tech
Senior

Какво е middleware в Go HTTP сървъри и как се реализира?

sobes.tech AI

Отговор от AI

Middleware в Go HTTP сървърите е функция или набор от функции, които обвиват обработчика на заявката (http.Handler), за да добавят допълнителна логика, като логване, удостоверяване, обработка на грешки и др.

Реализира се като функция, която приема http.Handler и връща http.Handler. Пример:

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) // извиква следващия обработчик
    })
}

// Използване
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("Hello"))
})

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

По този начин middleware позволява последователна обработка на заявките, добавяйки нужните функционални слоеве без да се променя основният обработчик.