0Pricing
Go Academy · Leçon

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 = 10

Configuration 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ête
  • context.WithTimeout : délai d’attente annulable et propagé
  • req.Header.Set pour les en-têtes personnalisés
  • Transport pour 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

  1. Effectuer des requêtes HTTP
  2. Configurer les délais d’expiration et les en-têtes
  3. Décoder les réponses JSON
  4. Gestion des erreurs et logique de nouvelle tentative
← Retour à Go Academy