GoDasturchi
HTTP Client Basics

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.

example.go
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.

Hints (0/3)

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

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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.

example.go
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.

Hints (0/3)

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