curl pas à pas
Composer et diagnostiquer des requêtes avec curl.
Objectifs
À la fin de cette leçon, vous saurez :
- envoyer des requêtes HTTP complètes avec
curl; - lire la sortie verbeuse (
-v) pour voir requête et réponse ; - tester POST, en-têtes et corps JSON.
Le minimum vital
curl https://exemple.fr
Affiche le corps de la réponse. Pour tout le reste (statut, en-têtes), il faut demander explicitement.
Voir tout : -v
curl -v https://exemple.fr
Sortie annotée :
* Connected to exemple.fr ... ← couche TCP/TLS
> GET / HTTP/1.1 ← ce que curl ENVOIE
> Host: exemple.fr
< HTTP/1.1 200 OK ← ce que le serveur RÉPOND
< Content-Type: text/html; ...
{ corps de la réponse }
> = requête sortante, < = réponse entrante. C'est l'outil de diagnostic HTTP n°1 : quand un client se comporte bizarrement, reproduisez sa requête avec curl -v.
Choisir sa méthode et son contenu
# POST avec corps JSON
curl -X POST https://api.exemple.fr/users \
-H "Content-Type: application/json" \
-d '{"name": "Paul"}'
# PATCH partiel
curl -X PATCH https://api.exemple.fr/users/42 \
-H "Content-Type: application/json" \
-d '{"email": "nouveau@exemple.fr"}'
# DELETE — souvent sans corps ni réponse
curl -X DELETE https://api.exemple.fr/tasks/7
Rappel des pièces : -X méthode, -H en-tête (répétable), -d corps.
Codes et en-têtes seulement
curl -i https://exemple.fr # inclut les en-têtes dans la sortie
curl -o /dev/null -s -w "%{http_code}\n" https://exemple.fr # juste le code
La seconde forme est parfaite pour un script de supervision (« mon site répond-il 200 ? »).
Exercice
- Interrogez une API publique (par ex.
https://api.github.com) avec-v: identifiez statut et Content-Type. - Faites une requête POST vers un service d'écho public (par ex.
https://httpbin.org/post) et vérifiez que votre JSON arrive intact. - Demandez délibérément une ressource inexistante : quel code obtenez-vous ?
- Écrivez une commande qui affiche uniquement le code de statut de trois URLs différentes.
Résumé
curl -vmontre l'échange complet ;-X/-H/-dcomposent la requête.- Reproduire à la main une requête client est LE réflexe de débogage API.
%{http_code}transforme curl en sonde de santé.
Correction disponibleCherchez d’abord par vous-même.Voir la correction
Correction
Réponses détaillées
Question 3. 404 Not Found sur la plupart des API bien conçues. Certaines renvoient aussi un corps JSON explicatif : toujours lire le corps, il dit souvent pourquoi.
Question 4.
for url in https://exemple.fr https://api.github.com https://httpbin.org/status/500; do
echo "$url → $(curl -o /dev/null -s -w '%{http_code}' $url)"
done
Boucle shell + sonde : vous venez d'écrire votre premier outil de monitoring.