Sobes.tech
Senior

Go HTTP серверлеринде middleware деген эмне жана ал кантип ишке ашырылат?

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 суранычтарды кезектешип иштетүүгө мүмкүндүк берет, негизги иштетүүчүнү өзгөртпөстөн, керектүү функционалдык катмары кошулат.