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 = 10Konfiguracja 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
- Wykonywanie żądań HTTP
- Ustawianie limitów czasu i nagłówków
- Dekodowanie odpowiedzi JSON
- Obsługa błędów i logika ponawiania