Sobes.tech
Senior

რა არის middleware-ი Go HTTP სერვერებში და როგორ ხორციელდება?

sobes.tech AI

პასუხი AI-სგან

Go HTTP სერვერებზე Middleware არის ფუნქცია ან ფუნქციების ნაკრები, რომელიც ხვდება მოთხოვნის დამუშავებელს (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 საშუალებას აძლევს მოთხოვნებს სერიული წესით დამუშავებას, საჭირო ფუნქციონალური ფენების დამატებით, ძირითადი დამუშავებლის შეცვლის გარეშე.