Sobes.tech
Senior

Ի՞նչ է middleware-ը Go HTTP սերվերներում և ինչպես է այն իրականացվում:

sobes.tech AI

Պատասխան AI-ից

Go HTTP սերվերներում middleware-ը ֆունկցիա կամ ֆունկցիաների հավաքածու է, որը պատում է հարցման մշակողին (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-ը թույլ է տալիս հերթականորեն մշակել հարցումները՝ ավելացնելով անհրաժեշտ ֆունկցիոնալ շերտեր առանց հիմնական մշակողի փոփոխության։