0Pricing
Go Academy · Lekcja

Ustawianie limitów czasu i nagłówków

Limity czasu klienta, niestandardowe nagłówki i tokeny uwierzytelniające

Ustawianie limitów czasu i nagłówków to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 2 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.

Limit czasu na poziomie klienta

Ustaw http.Client.Timeout, aby ograniczyć łączny czas wykonywania żądania i odbierania odpowiedzi. To najłatwiejszy do skonfigurowania limit czasu.

client := &http.Client{Timeout: 10 * time.Second}

Limity czasu na poziomie transportu

Dostosuj szczegółowo limity czasu nawiązywania połączenia i uzgadniania TLS za pośrednictwem http.Transport:

t := &http.Transport{
    DialContext: (&net.Dialer{
        Timeout:   5 * time.Second,
        KeepAlive: 30 * time.Second,
    }).DialContext,
    TLSHandshakeTimeout:   5 * time.Second,
    ResponseHeaderTimeout: 5 * time.Second,
}
client := &http.Client{Transport: t, Timeout: 30 * time.Second}

Limit czasu oparty na kontekście

Limity czasu kontekstu dotyczą pojedynczego żądania i są propagowane do wywołań podrzędnych. Anulują żądanie po upływie terminu.

ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)

Ustawianie nagłówków żądania

Dodaj nagłówki do żądania za pomocą req.Header.Set (zastępuje) lub req.Header.Add (dołącza):

req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)

Typowe nagłówki

Content-Type określa format treści żądania; Accept — oczekiwany format odpowiedzi; Authorization — tokeny uwierzytelniania; User-Agent — identyfikację klienta.

Odczytywanie nagłówków odpowiedzi

Odczytaj nagłówki odpowiedzi za pomocą resp.Header.Get(key):

contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")

Limit czasu bezczynnego połączenia

Ustaw IdleConnTimeout w transporcie, aby zamykać bezczynne połączenia i zapobiegać ich gromadzeniu się po spadku natężenia ruchu.

t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10

Konfiguracja TLS

Dostosuj TLS (minimalną wersję, certyfikaty klienta) za pośrednictwem tls.Config w transporcie:

t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}

Wykrywanie błędów limitu czasu

Rozróżniaj błędy limitu czasu od błędów sieci za pomocą errors.As:

var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
    // handle timeout
}

Limit czasu żądania a limit czasu klienta

Client.Timeout obowiązuje dla każdego żądania. Limit czasu kontekstu dotyczy pojedynczego żądania i może być krótszy niż limit czasu klienta. Oba limity są respektowane — obowiązuje krótszy z nich.

Wyłączanie keep-alive

Ustaw DisableKeepAlives: true w transporcie w przypadku krótkotrwałych programów, które otwierają niewiele połączeń, aby uniknąć narzutu puli połączeń.

Szybkie sprawdzenie

Jeśli ustawiono zarówno http.Client.Timeout, jak i limit czasu kontekstu, który z nich zacznie obowiązywać?

Podsumowanie: limity czasu i nagłówki

Najważniejsze informacje:

  • client.Timeout: łączny limit czasu pojedynczego żądania
  • context.WithTimeout: anulowalny limit czasu propagowany wraz z kontekstem
  • req.Header.Set do ustawiania niestandardowych nagłówków
  • Transport do precyzyjnej konfiguracji limitów czasu TLS, nawiązywania połączeń i bezczynności

Często zadawane pytania

Czy lekcja „Ustawianie limitów czasu i nagłówków” jest bezpłatna?

Tak — pełny tekst „Ustawianie limitów czasu i nagłówków” 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 „Ustawianie limitów czasu i nagłówków”?

Limity czasu klienta, niestandardowe nagłówki i tokeny uwierzytelniające Ć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 2 z 4.

Ile czasu zajmuje lekcja „Ustawianie limitów czasu i nagłówków”?

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

  1. Wykonywanie żądań HTTP
  2. Ustawianie limitów czasu i nagłówków
  3. Dekodowanie odpowiedzi JSON
  4. Obsługa błędów i logika ponawiania
← Powrót do Go Academy