N.NOTKOKO // HACK
COURS 06 / 18

Comprendre HTTP avec curl

Reproduire une requête et comprendre les éléments qui déterminent sa réponse.

HTTPcurlJSON
01 // COMPRENDRE

Décomposer un échange

Une URL contient un protocole, un hôte, un chemin et parfois des paramètres après ?. Une requête ajoute une méthode, des en-têtes et éventuellement un corps. GET sert habituellement à lire ; POST à soumettre des données. JSON décrit des objets et des listes : une chaîne utilise des guillemets doubles, un nombre peut être sans guillemets. Vérifie toujours le sens des champs dans l’application.

02 // COMPRENDRE

Une première lecture

curl envoie une requête sans afficher l’interface du site. -i inclut les en-têtes de réponse ; -I envoie une requête HEAD, différente d’un GET. -H ajoute un en-tête. L’exemple ci-dessous demande un objet au format JSON dans un laboratoire déjà configuré. Sur Windows, curl.exe évite les ambiguïtés d’alias de certains PowerShell.

EXEMPLE PÉDAGOGIQUE
curl -i -H "Accept: application/json" "https://atelier.test/api/books/18"
Comment le lire

Lis d’abord le statut, puis Content-Type, puis le corps. 200 signale un succès HTTP ; 302 une redirection ; 401 une authentification absente ou invalide ; 403 un refus ; 404 une ressource introuvable ou masquée ; 429 une limite de requêtes. Le corps peut encore contenir une erreur applicative.

03 // COMPRENDRE

Envoyer et conserver le contexte

Pour un POST JSON avec curl, place le corps dans un fichier request.json, puis utilise --data-binary @request.json avec -H "Content-Type: application/json". Pour les cookies, -c cookies.txt enregistre ceux reçus et -b cookies.txt les renvoie. Un appel lancé dans ton terminal n’hérite pas automatiquement de la session du navigateur. Une redirection peut expliquer pourquoi tu reçois une page de connexion au lieu des données attendues. Compare d’abord la requête exacte avant d’ajouter des options.

04 // À TOI DE RÉFLÉCHIR

Vérifie que tu as compris.

3 questions pour mettre les idées en pratique. Réponds avec tes mots, puis vérifie chaque réponse.

La correction repère les notions attendues et certaines formulations proches. Elle reste indicative : lis aussi l’explication. Tes réponses restent dans cette page et ne sont pas enregistrées.

QUESTION 1 / 3

Une réponse courte et expliquée suffit.0 / 1200

À toi de répondre

Corrigé détaillé — question 1

-i inclut les en-têtes dans l’affichage de la réponse. -I demande une requête HEAD : ce n’est pas simplement un GET dont on cacherait le corps. La casse des options compte.

Exemple de réponse

-i affiche les en-têtes et -I envoie HEAD.

QUESTION 2 / 3

Une réponse courte et expliquée suffit.0 / 1200

À toi de répondre

Corrigé détaillé — question 2

Le terminal n’hérite pas automatiquement des cookies du navigateur. Vérifie la session envoyée, le statut et une éventuelle redirection vers la connexion avant de conclure que la route est mauvaise.

Exemple de réponse

La session est différente, curl ne partage pas automatiquement le cookie.

QUESTION 3 / 3

Une réponse courte et expliquée suffit.0 / 1200

À toi de répondre

Corrigé détaillé — question 3

Un 200 indique que l’échange HTTP a abouti, mais le corps peut annoncer une erreur métier. Lis la réponse et vérifie le résultat effectif de l’action.

Exemple de réponse

Le corps de réponse et les erreurs applicatives éventuelles.

05 // À RETENIR

Une requête comprend aussi sa session, ses en-têtes et sa méthode.