Indstilling af timeouts og headers
Client-timeouts, brugerdefinerede headers og auth-tokens
Indstilling af timeouts og headers er en gratis Go Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Go Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Go Academy-kurset indeholder 4 lektioner i alt.
Tidsgrænse på klientniveau
Angiv http.Client.Timeout for at begrænse den samlede tid for anmodning og svar. Dette er den letteste tidsgrænse at konfigurere.
client := &http.Client{Timeout: 10 * time.Second}Tidsgrænser på transportniveau
Finjuster tidsgrænser for oprettelse af forbindelser og TLS-håndtryk via 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}Kontekstbaseret tidsgrænse
Tidsgrænser i kontekst gælder pr. anmodning og videreføres til efterfølgende kald. De annullerer anmodningen, når tidsfristen udløber.
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)Angivelse af anmodningsheadere
Føj headere til en anmodning med req.Header.Set (erstatter) eller req.Header.Add (tilføjer):
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)Almindelige headere
Content-Type til anmodningsindhold; Accept til det ønskede svarformat; Authorization til godkendelsestokens; User-Agent til identifikation af klienten.
Læsning af svarheadere
Læs svarheadere fra resp.Header.Get(key):
contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")Tidsgrænse for inaktive forbindelser
Angiv IdleConnTimeout på transporten for at lukke inaktive forbindelser og forhindre, at de hober sig op, når trafikken falder.
t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10TLS-konfiguration
Tilpas TLS (minimumsversion, klientcertifikater) via tls.Config på transporten:
t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}Registrering af fejl ved tidsgrænser
Skeln mellem fejl på grund af tidsgrænser og netværksfejl ved hjælp af errors.As:
var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
// handle timeout
}Tidsgrænse pr. anmodning kontra klientens tidsgrænse
Client.Timeout gælder for hver anmodning. En tidsgrænse i kontekst gælder pr. anmodning og kan være kortere end klientens tidsgrænse. Begge overholdes — den korteste gælder.
Deaktivér forbindelsesgenbrug
Angiv DisableKeepAlives: true på transporten for kortlivede programmer, der åbner få forbindelser, så overheadet ved forbindelsespooling undgås.
Hurtig kontrol
Når både http.Client.Timeout og en timeout for en kontekst er angivet, hvilken af dem træder så i kraft?
Opsummering: Tidsgrænser og headere
Vigtige punkter:
- client.Timeout: samlet tidsgrænse pr. forespørgsel
- context.WithTimeout: annullerbar tidsgrænse, der videresendes
- req.Header.Set til brugerdefinerede headere
- Transport til detaljerede tidsgrænser for TLS, opkald og inaktive forbindelser
Lær Go med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 51
- Lektioner
- 203
Ofte stillede spørgsmål
Er lektionen “Indstilling af timeouts og headers” gratis?
Ja — alle 3 lektioner i læringssporet Go Academy, inklusive “Indstilling af timeouts og headers”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Go Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Indstilling af timeouts og headers”?
Client-timeouts, brugerdefinerede headers og auth-tokens Du øver dig i Go Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Go Academy?
Der kræves ingen tidligere erfaring. Go Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Indstilling af timeouts og headers”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Go Academy-lektion?
Ja. Alle Go Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Afsendelse af HTTP-requests
- Indstilling af timeouts og headers
- Afkodning af JSON-responses
- Fejlhåndtering og retry-logik