Wykonywanie żądań HTTP
GET i POST za pomocą http.NewRequest oraz http.DefaultClient
Wykonywanie żądań HTTP to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Skrót http.Get
http.Get(url) to najprostszy sposób na wykonanie żądania GET. Zawsze zamykaj treść odpowiedzi.
resp, err := http.Get("https://api.example.com/users")
if err != nil { return err }
defer resp.Body.Close()http.DefaultClient
http.Get używa pakietowego DefaultClient. W środowisku produkcyjnym utwórz własnego klienta z ustawionymi limitami czasu.
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Get(url)http.NewRequest — pełna kontrola
Użyj http.NewRequest, aby ustawić metodę, nagłówki i treść żądania:
req, err := http.NewRequestWithContext(ctx, "POST", url, body)
req.Header.Set("Content-Type", "application/json")
resp, err := client.Do(req)Treść żądania
Przekaż treść żądania za pośrednictwem io.Reader. W przypadku danych JSON użyj bytes.NewBuffer(data) lub strings.NewReader.
data, _ := json.Marshal(payload)
req, _ := http.NewRequestWithContext(ctx, "POST", url, bytes.NewBuffer(data))Sprawdzanie statusu odpowiedzi
Zawsze sprawdzaj kod statusu HTTP — błąd 4xx/5xx nie jest domyślnie zwracany jako błąd Go.
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("unexpected status: %d", resp.StatusCode)
}Dekodowanie odpowiedzi JSON
Zdekoduj treść odpowiedzi za pomocą json.Decoder, aby nie wczytywać jej najpierw w całości do pamięci:
var result APIResponse
json.NewDecoder(resp.Body).Decode(&result)Parametry zapytania
Zbuduj ciągi zapytań za pomocą url.Values i dołącz je do adresu URL:
params := url.Values{}
params.Set("page", "1")
params.Set("limit", "20")
reqURL := baseURL + "?" + params.Encode()Client.Do i własny transport
Opakuj http.DefaultTransport, aby dodać logikę ponawiania, własne ustawienia TLS lub konfigurację serwera proxy bez utraty domyślnego zachowania.
Treść odpowiedzi musi zostać zamknięta
Nieuzamknięcie treści odpowiedzi powoduje wyciek bazowego połączenia TCP. Zawsze używaj defer resp.Body.Close(), nawet w przypadku odpowiedzi zawierających błędy.
Obsługa przekierowań
Domyślny klient obsługuje maksymalnie 10 przekierowań. Ustaw client.CheckRedirect, aby dostosować sposób obsługi przekierowań lub ją wyłączyć.
Ustawianie User-Agent
Ustaw opisowy nagłówek User-Agent, aby logi serwera mogły zidentyfikować klienta:
req.Header.Set("User-Agent", "myapp/1.0 (+https://myapp.com)")Szybkie sprawdzenie
Dlaczego należy zawsze zamykać treść odpowiedzi HTTP?
Podsumowanie: wykonywanie żądań HTTP
Najważniejsze informacje:
- Zawsze używaj defer resp.Body.Close()
- W środowisku produkcyjnym twórz własnego http.Client z ustawieniem Timeout
- Używaj http.NewRequestWithContext do obsługi kontekstu i własnych nagłówków
- Sprawdzaj resp.StatusCode — błędy HTTP nie są błędami Go
Często zadawane pytania
Czy lekcja „Wykonywanie żądań HTTP” jest bezpłatna?
Tak — pełny tekst „Wykonywanie żądań HTTP” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Wykonywanie żądań HTTP”?
GET i POST za pomocą http.NewRequest oraz http.DefaultClient Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Wykonywanie żądań HTTP”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Wykonywanie żądań HTTP
- Ustawianie limitów czasu i nagłówków
- Dekodowanie odpowiedzi JSON
- Obsługa błędów i logika ponawiania