Configurer les délais d’expiration et les en-têtes
Délais d’expiration du client, en-têtes personnalisés et jetons d’authentification
Configurer les délais d’expiration et les en-têtes est une leçon Go Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Go Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Go Academy comprend 4 leçons au total.
Délai d’attente au niveau du client
Définissez http.Client.Timeout pour limiter la durée totale de la requête et de la réponse. C’est le délai d’attente le plus simple à configurer.
client := &http.Client{Timeout: 10 * time.Second}Délais d’attente au niveau du transport
Ajustez précisément les délais d’établissement de la connexion et de négociation TLS 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}Délai d’attente fondé sur le contexte
Les délais d’attente du contexte s’appliquent à chaque requête et se propagent aux appels en aval. Ils annulent la requête lorsque l’échéance est dépassée.
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)Définir les en-têtes de requête
Ajoutez des en-têtes à une requête avec req.Header.Set (remplace) ou req.Header.Add (ajoute) :
req.Header.Set("Authorization", "Bearer "+token)
req.Header.Set("Accept", "application/json")
req.Header.Set("X-Request-ID", requestID)En-têtes courants
Content-Type pour les corps de requête ; Accept pour le format de réponse souhaité ; Authorization pour les jetons d’authentification ; User-Agent pour identifier le client.
Lire les en-têtes de réponse
Lisez les en-têtes de réponse avec resp.Header.Get(key) :
contentType := resp.Header.Get("Content-Type")
retryAfter := resp.Header.Get("Retry-After")Délai d’attente des connexions inactives
Définissez IdleConnTimeout sur le transport pour fermer les connexions inactives et éviter leur accumulation lorsque le trafic diminue.
t.IdleConnTimeout = 90 * time.Second
t.MaxIdleConnsPerHost = 10Configuration TLS
Personnalisez TLS (version minimale, certificats client) via tls.Config sur le transport :
t.TLSClientConfig = &tls.Config{MinVersion: tls.VersionTLS12}Détecter les erreurs de délai d’attente
Faites la distinction entre les erreurs de délai d’attente et les erreurs réseau à l’aide de errors.As :
var urlErr *url.Error
if errors.As(err, &urlErr) && urlErr.Timeout() {
// handle timeout
}Délai par requête ou délai du client
Client.Timeout s’applique à chaque requête. Un délai du contexte s’applique à une seule requête et peut être plus court que le délai du client. Les deux sont respectés : le délai le plus court l’emporte.
Désactiver le maintien des connexions
Définissez DisableKeepAlives: true sur le transport pour les programmes de courte durée qui ouvrent peu de connexions, afin d’éviter la surcharge liée à la mise en pool des connexions.
Vérification rapide
Lorsque http.Client.Timeout et un délai d’attente de contexte sont tous deux définis, lequel prend effet ?
Récapitulatif : délais d’attente et en-têtes
Points clés :
client.Timeout: délai d’attente total par requêtecontext.WithTimeout: délai d’attente annulable et propagéreq.Header.Setpour les en-têtes personnalisésTransportpour les délais d’attente TLS, de connexion et d’inactivité détaillés
Questions Fréquemment Posées
La leçon « Configurer les délais d’expiration et les en-têtes » est-elle gratuite ?
Oui — le texte complet de « Configurer les délais d’expiration et les en-têtes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Go Academy, passe à CoddyKit PRO. Le cours Go Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Configurer les délais d’expiration et les en-têtes » ?
Délais d’expiration du client, en-têtes personnalisés et jetons d’authentification Tu pratiques Go Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Go Academy ?
Aucune expérience préalable n'est requise. Go Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Configurer les délais d’expiration et les en-têtes » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Go Academy ?
Oui. Chaque leçon Go Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Effectuer des requêtes HTTP
- Configurer les délais d’expiration et les en-têtes
- Décoder les réponses JSON
- Gestion des erreurs et logique de nouvelle tentative