Sobes.tech
Senior

Go HTTP sunucularında ara katman (middleware) nedir ve nasıl uygulanır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go HTTP sunucularında Middleware, istek işleyicisini (http.Handler) sarmalayan ve ek mantık eklemek için kullanılan fonksiyon veya fonksiyonlar kümesidir; örneğin, günlük kaydı, kimlik doğrulama, hata işleme vb.

Middleware, bir http.Handler alan ve başka bir http.Handler döndüren bir fonksiyon olarak uygulanır. Örnek:

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) // bir sonraki işleyiciyi çağır
    })
}

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

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

Bu şekilde middleware, ana işleyiciyi değiştirmeden, ihtiyaç duyulan fonksiyonel katmanları ekleyerek istekleri ardışık olarak işleme imkanı sağlar.