Sobes.tech
Senior

Мидлвэр дар серверҳои HTTP-и Go чист ва чӣ гуна татбиқ мешавад?

sobes.tech AI

Ҷавоб аз AI

Middleware дар HTTP-серверҳои Go — ин функсия ё маҷмӯи функсияҳоест, ки обработчике дархост (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 имкон медиҳад, ки дархостҳо ба таври пайдарпай коркард шаванд, қабатҳои функсионалӣ илова карда шавад бе тағир додани обработчике асосӣ.