HTTP GET Requests
HTTP GET so'rovlari
Bu darsdan boshlab siz net/http paketi bilan ishlaysiz — Go'ning veb-server va veb-klient yozish uchun standart vositasi. Muhim eslatma: bu darslar muhitida haqiqiy internetga chiqish yo'q, shuning uchun tashqi saytlarga so'rov yubormaymiz. Buning o'rniga net/http/httptest paketidan foydalanamiz — u haqiqiy tarmoqsiz, xotirada so'rov/javob almashinuvini simulyatsiya qiladi. Bu — haqiqiy Go loyihalarida ham HTTP handler'larni sinash uchun ishlatiladigan standart vosita.
func GreetHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
fmt.Fprintf(w, "Salom, %s!", name)
}
req := httptest.NewRequest(http.MethodGet, "/greet?name=Malika", nil)
rec := httptest.NewRecorder()
GreetHandler(rec, req)Handler funksiya — HTTP so'rovni qabul qiladigan funksiya, imzosi har doim bir xil: func(w http.ResponseWriter, r *http.Request). r.URL.Query().Get("name") so'rov satridagi (?name=Malika) parametrni oladi — bu YAML Data Pipeline kursidagi map'dan o'qish andazasiga o'xshaydi. httptest.NewRequest sinov uchun so'rov yaratadi, httptest.NewRecorder esa javobni "yozib oladigan" soxta ResponseWriter.
>_ Exercise
GreetHandler(w http.ResponseWriter, r *http.Request) funksiyasini yozing. U name so'rov parametrini o'qiydi (agar bo'sh bo'lsa, "Mehmon" ishlatilsin) va "Salom, <name>!" yozadi. mainda httptest.NewRequest/NewRecorder bilan /greet?name=Malika so'rovini yasab, natijani (status va tana) chop eting.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
HTTP handler — func(w http.ResponseWriter, r *http.Request) imzosiga ega funksiya. httptest.NewRequest va httptest.NewRecorder haqiqiy tarmoqsiz, to'liq HTTP so'rov/javob aylanishini sinash imkonini beradi — bu Go loyihalarida handler'larni sinashning standart usuli.
NEXT UP
HTTP POST and Custom Requests
$ go run main.go
Kodingizni ishga tushiring