HTTP Client Basics
HTTP klient asoslari
HTTP — internetdagi ikkita dastur (masalan brauzer va server) o'zaro gaplashadigan til. Go'da net/http paketi bilan boshqa serverга so'rov yuborish juda oddiy. Bu darsda o'zimiz kichik test-server ochib, unga haqiqiy so'rov yuboramiz.
package main
import (
"fmt"
"io"
"net/http"
"net/http/httptest"
)
func main() {
// Sinov uchun kichik server ochamiz (haqiqiy loyihada bu — masalan tashqi API bo'lardi)
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Salom, mijoz!")
}))
defer srv.Close()
resp, err := http.Get(srv.URL)
if err != nil {
fmt.Println("xato:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println(resp.StatusCode)
fmt.Println(string(body))
}http.Get(url) eng oddiy usul — GET so'rovini yuboradi va javobni qaytaradi. Javob (*http.Response) ichida StatusCode (masalan 200 — "hammasi joyida") va Body (javob matni, io.Reader sifatida) bor. Javob tanasini o'qib bo'lgach, uni defer resp.Body.Close() bilan yopish shart — aks holda tarmoq resurslari band bo'lib qoladi.
httptest.NewServer — sinov uchun haqiqiy, lekin faqat shu dastur ichida ishlaydigan mini-server ochadi. Bu — HTTP klient kodini haqiqiy internetga chiqmasdan sinash uchun Go'dagi standart usul.
>_ Exercise
Berilgan test-serverga GET so'rovi yuboring va javobni tekshiring.
- •srv.URL manziliga http.Get bilan so'rov yuboring
- •javob tanasini io.ReadAll bilan o'qing
- •status kodini va javob matnini chop eting
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
http.Get — boshqa serverga so'rov yuborishning eng sodda yo'li; httptest.NewServer esa klient kodini xavfsiz, real internetsiz sinash imkonini beradi.
NEXT UP
Custom HTTP Requests
$ go run main.go
Kodingizni ishga tushiring