GoDasturchi
HTTP Handlers and Routing

HTTP Handlers and Routing

HTTP handler'lar va marshrutlash

Haqiqiy veb-ilova bitta emas, ko'plab yo'llarga (masalan, /users, /products) javob berishi kerak. `http.ServeMux` — Go standart kutubxonasidagi router (marshrutlovchi): u kiruvchi so'rovning yo'lini (path) tekshirib, mos handler'ga yo'naltiradi.

example.go
mux := http.NewServeMux()
mux.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "hello route")
})
mux.HandleFunc("/bye", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "bye route")
})

ServeMuxning o'zi ham handler — u ServeHTTP(w, r) metodiga ega, shuning uchun uni httptest.NewRecorder bilan to'g'ridan-to'g'ri sinash mumkin, xuddi oddiy handler funksiyadagidek. Agar so'rov ro'yxatdan o'tmagan yo'lga kelsa, ServeMux avtomatik ravishda 404 Not Found javobini qaytaradi — bu Go Basics kursidagi "standart holat" (switchdagi default) g'oyasiga o'xshaydi.

>_ Exercise

http.NewServeMux() yarating va unga ikkita yo'l ro'yxatdan o'tkazing: /hello"hello route" yozadi, /bye"bye route" yozadi. mainda /hello, /bye va /unknown yo'llariga so'rov yuborib, har biri uchun "<yo'l> -> <status> <tana>" shaklida chop eting.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

http.ServeMux so'rovlarni yo'l (path) asosida mos handler'larga yo'naltiradi va o'zi ham http.Handler bo'lgani uchun to'g'ridan-to'g'ri sinash mumkin. Ro'yxatdan o'tmagan yo'llar avtomatik 404 javobini oladi.

NEXT UP

Thread-Safe REST API

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

HTTP Handlers and Routing

HTTP handler'lar va marshrutlash

Haqiqiy veb-ilova bitta emas, ko'plab yo'llarga (masalan, /users, /products) javob berishi kerak. `http.ServeMux` — Go standart kutubxonasidagi router (marshrutlovchi): u kiruvchi so'rovning yo'lini (path) tekshirib, mos handler'ga yo'naltiradi.

example.go
mux := http.NewServeMux()
mux.HandleFunc("/hello", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "hello route")
})
mux.HandleFunc("/bye", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprint(w, "bye route")
})

ServeMuxning o'zi ham handler — u ServeHTTP(w, r) metodiga ega, shuning uchun uni httptest.NewRecorder bilan to'g'ridan-to'g'ri sinash mumkin, xuddi oddiy handler funksiyadagidek. Agar so'rov ro'yxatdan o'tmagan yo'lga kelsa, ServeMux avtomatik ravishda 404 Not Found javobini qaytaradi — bu Go Basics kursidagi "standart holat" (switchdagi default) g'oyasiga o'xshaydi.

>_ Exercise

http.NewServeMux() yarating va unga ikkita yo'l ro'yxatdan o'tkazing: /hello"hello route" yozadi, /bye"bye route" yozadi. mainda /hello, /bye va /unknown yo'llariga so'rov yuborib, har biri uchun "<yo'l> -> <status> <tana>" shaklida chop eting.

Stuck? Reveal a hint to help you.

Hints (0/4)

Key Takeaway

Key Takeaway:

http.ServeMux so'rovlarni yo'l (path) asosida mos handler'larga yo'naltiradi va o'zi ham http.Handler bo'lgani uchun to'g'ridan-to'g'ri sinash mumkin. Ro'yxatdan o'tmagan yo'llar avtomatik 404 javobini oladi.

NEXT UP

Thread-Safe REST API