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.
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.
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
$ go run main.go
Kodingizni ishga tushiring