Qu'est-ce que la commande curl ? Exemples, Flags, Requêtes HTTP
curl est un outil ligne de commande pour requêtes HTTP/HTTPS/FTP depuis le terminal. Pour testing API, debugging, scripting et checks CI.
Qu'est-ce que la commande curl ?
curl (Client URL) est un outil ligne de commande et library pour transférer des données avec URLs. Il supporte des dizaines de protocoles (HTTP, HTTPS, FTP, SFTP, SMTP, IMAP, LDAP, SCP) et est le standard de facto pour faire des requêtes HTTP depuis le terminal. Originellement écrit en 1996 par Daniel Stenberg, curl est bundled avec la plupart des distributions Linux, macOS et Windows 10+.
Les développeurs utilisent curl pour tester des endpoints API, debug d'issues HTTP, scripting d'automatisation, télécharger des fichiers et checks CI/CD.
Syntaxe basique curl
curl https://api.example.com/users/42Avec headers + body :
curl -i https://api.example.com/users/42POST avec body JSON :
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "alice@example.com"}'Flags curl les plus utilisés
| Flag | Ce qu'il fait |
|---|---|
-X METHOD | Définir méthode HTTP |
-H "Header: value" | Ajouter header de requête |
-d 'data' | Envoyer body de requête |
-d @file.json | Lire body depuis fichier |
-F "field=value" | Envoyer champ multipart/form-data |
-F "file=@photo.jpg" | Uploader un fichier (multipart) |
-i | Inclure headers de response |
-I | Envoyer requête HEAD |
-L | Suivre redirects |
-o file | Sauvegarder body response dans fichier |
-s | Mode silent |
-v | Output verbose (debug) |
-k | Sauter vérification cert TLS |
-u user:pass | HTTP Basic Auth |
--max-time N | Timeout total en secondes |
Recettes courantes curl
Tester un endpoint API
curl -i https://api.example.com/healthPOSTer JSON
curl -X POST https://api.example.com/orders \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"product_id": 42, "quantity": 1}'Télécharger un fichier
curl -O https://example.com/large-file.zipUploader un fichier (multipart)
curl -F "avatar=@photo.jpg" -F "username=alice" https://api.example.com/uploadObtenir uniquement le code status HTTP
curl -s -o /dev/null -w "%{http_code}" https://example.comcurl vs wget vs httpie
| Aspect | curl | wget | HTTPie |
|---|---|---|---|
| Meilleur pour | Scripting, testing API | Téléchargements fichier, mirroring | Testing API human-friendly |
| Output | Stdout | Fichier | Stdout, color-coded |
| Téléchargement récursif | Non | Oui (spécialité) | Non |
| Protocoles | 30+ | HTTP, HTTPS, FTP | HTTP/HTTPS seulement |
| Pré-installé | Presque partout | Linux seulement typiquement | Nécessite install |
Pièges courants curl
- Oublier Content-Type pour JSON.
- Escape de quotes en shell.
- Logger des secrets.
- Issues HTTP/2.
- Status code incorrect dans scripts.
--failpour exit non-zero sur 4xx/5xx.
curl dans CI/CD
- Smoke tests après deploy.
- Endpoints health check.
- Tests intégration API.
- Tests budget performance.
FAQ : commande curl
Quelle est la différence entre -d et --data-raw ?
-d traite @ comme "lire depuis fichier". --data-raw envoie les characters @ littéraux.
Comment j'envoie une méthode HTTP custom ?
-X CUSTOM fonctionne.
Comment je vois la requête que curl envoie ?
-v pour mode verbose.
curl peut-il faire des requêtes parallèles ?
curl 7.66+ supporte --parallel. Pour load testing at scale outils dédiés.
Comment je gère les cookies entre plusieurs calls curl ?
Sauvegarder avec --cookie-jar, envoyer avec --cookie.
Puis-je utiliser curl comme outil load testing ?
Pour 1-10 requêtes concurrentes oui. Pour vrai load testing outils dédiés.
Au-delà de curl : load testing at scale avec LoadFocus
Si vous avez atteint les limites de curl-in-a-loop pour load testing, LoadFocus exécute des scripts JMeter et k6 qui poussent requêtes HTTP jusqu'à 12 500 VUs depuis 25+ régions. Inscrivez-vous sur loadfocus.com/signup.
Outils LoadFocus connexes
Mettez ce concept en pratique avec LoadFocus — la plateforme même qui propulse tout ce que vous venez de lire.