Constructeur de commande curl
Construire des commandes curl à partir de la méthode, des en-têtes et du corps
Generated cURL Command
curl \ -L \ 'https://api.example.com/users'
Request
Headers
Authentication
Options
Quick Templates
Le curl Command Builder génère des commandes curl complètes et correctement échappées via un formulaire interactif, vous permettant de configurer la méthode HTTP, les en-têtes, l'authentification, le corps de la requête et les options sans avoir à mémoriser la syntaxe des nombreux flags de curl. Sélectionnez POST, ajoutez un corps JSON et un Bearer token, et obtenez une commande prête à coller comme curl -X POST -H "Authorization: Bearer eyJ..." -H "Content-Type: application/json" -d '{"name":"Alice"}' https://api.example.com/users.
Comprendre curl
curl est le couteau suisse du HTTP. Il est livré avec pratiquement toutes les distributions Linux, toutes les installations macOS, et est disponible sur Windows. Lorsque vous devez tester un endpoint d'API, reproduire un rapport de bug, vérifier des en-têtes de réponse ou vérifier qu'un serveur est joignable, curl est généralement le chemin le plus rapide entre la question et la réponse. Il fonctionne dans n'importe quel terminal, ne nécessite aucune configuration, et produit une sortie que vous pouvez rediriger vers d'autres outils, sauvegarder dans des fichiers ou inclure dans des scripts.
La difficulté de curl réside dans son ampleur. L'outil supporte plus de 200 flags en ligne de commande, couvrant tout, des requêtes GET basiques à l'authentification par certificat client, en passant par le tunneling via proxy et les téléchargements résumables. Pour les tests API quotidiens, vous n'avez besoin que d'une douzaine de ces flags, mais savoir lesquels utiliser et obtenir la bonne syntaxe -- en particulier les règles de guillemets qui diffèrent entre bash, zsh, PowerShell et CMD -- demande de la pratique. Il est facile d'oublier si le flag d'authentification est -u ou --user, si le corps va après -d ou --data, et si les corps JSON nécessitent des guillemets simples ou des guillemets doubles échappés.
Ce builder gère la syntaxe pour vous. Vous remplissez les parties que vous connaissez -- URL, méthode, en-têtes, corps, identifiants d'authentification -- et il génère une commande correctement formatée et échappée pour votre plateforme. Vous pouvez la copier directement dans votre terminal et l'exécuter. Au fil du temps, construire des commandes interactivement et étudier le résultat est l'un des meilleurs moyens d'apprendre la syntaxe de curl, car vous pouvez voir comment chaque champ du formulaire correspond à un flag et comment les guillemets fonctionnent pour votre shell.
Comment construire une commande curl
- Saisissez l'URL cible pour votre requête HTTP.
- Sélectionnez la méthode HTTP (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS).
- Ajoutez des en-têtes personnalisés (par exemple,
Content-Type: application/json,Authorization: Bearer <token>). - Définissez le corps de la requête pour les requêtes POST/PUT/PATCH (JSON, données de formulaire ou texte brut).
- Configurez les options comme le suivi des redirections, le timeout ou la sortie verbeuse.
- Copiez la commande générée pour votre shell (Unix/macOS ou Windows PowerShell).
Exemples de commandes curl
Requête GET simple
curl https://api.example.com/users/42
Requête POST avec corps JSON
curl -X POST https://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name": "Alice", "email": "[email protected]", "role": "admin"}'
Requête authentifiée avec Bearer Token
curl https://api.example.com/account \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
Requête PUT avec Basic Auth
curl -X PUT https://api.example.com/settings \
-u "admin:password123" \
-H "Content-Type: application/json" \
-d '{"notifications": true, "theme": "dark"}'
POST de données de formulaire (URL-Encoded)
curl -X POST https://example.com/login \
-d "username=alice&password=secret123"
Requête avec plusieurs options
curl -X DELETE https://api.example.com/posts/99 \
-H "Authorization: Bearer eyJhbGci..." \
-H "X-Request-ID: req-abc-123" \
-L \
--max-time 30 \
-w "\n%{http_code}\n"
Quand utiliser le curl Command Builder
- Test d'API en développement -- Construisez rapidement des requêtes pour tester des endpoints sans écrire de code client ni passer à un outil graphique.
- Génération d'exemples pour la documentation -- Construisez des commandes curl correctes et prêtes à copier-coller pour la documentation d'API et les fichiers README.
- Création de rapports de bugs reproductibles -- Générez une commande curl autonome qui reproduit un problème, facilitant les tests par d'autres développeurs.
- Apprentissage de la syntaxe curl -- Construisez des commandes interactivement et étudiez les flags générés pour apprendre les options de curl par l'exemple.
- Génération de commandes multi-plateformes -- Obtenez des commandes correctement échappées pour les shells Unix/macOS (guillemets simples) et Windows PowerShell (guillemets doubles échappés).
- Partage de cas de test API -- Produisez une commande autonome que quiconque disposant de curl peut exécuter pour vérifier le comportement.
Référence des flags curl
Flags courants
| Flag | Forme longue | Rôle | Exemple |
|---|---|---|---|
-X | --request | Définir la méthode HTTP | -X POST |
-H | --header | Ajouter un en-tête personnalisé | -H "Content-Type: application/json" |
-d | --data | Envoyer le corps de la requête | -d '{"key": "value"}' |
-u | --user | Authentification Basic | -u "user:pass" |
-L | --location | Suivre les redirections | -L |
-o | --output | Écrire la sortie dans un fichier | -o response.json |
-s | --silent | Supprimer la barre de progression | -s |
-v | --verbose | Afficher les en-têtes requête/réponse | -v |
-k | --insecure | Ignorer la vérification TLS | -k |
-w | --write-out | Format de sortie personnalisé | -w "%{http_code}" |
Flags de timeout et de retry
| Flag | Rôle | Exemple |
|---|---|---|
--max-time | Limite de temps totale en secondes | --max-time 30 |
--connect-timeout | Timeout de connexion en secondes | --connect-timeout 5 |
--retry | Nombre de tentatives en cas d'échec | --retry 3 |
--retry-delay | Secondes entre les tentatives | --retry-delay 2 |
Flags de corps et de contenu
| Flag | Rôle | Quand l'utiliser |
|---|---|---|
-d / --data | Envoyer des données comme corps de requête | JSON, données de formulaire, texte brut |
--data-raw | Envoyer des données sans interpréter @ | Quand le corps contient des caractères @ |
--data-binary | Envoyer des données binaires telles quelles | Upload de fichiers, payloads binaires |
-F / --form | Envoyer des données multipart | Upload de fichiers avec champs de formulaire |
--data-urlencode | Encoder en URL les données avant envoi | Données de formulaire avec caractères spéciaux |
Échappement et guillemets selon le shell
Le builder gère les différences délicates entre les shells :
Unix/macOS (bash, zsh) -- Utilise les guillemets simples pour les corps JSON afin d'éviter l'interprétation de $ et ! :
curl -d '{"price": "$9.99"}' https://api.example.com/order
Windows PowerShell -- Utilise les guillemets doubles échappés car PowerShell ne supporte pas l'interpolation des chaînes entre guillemets simples de la même manière :
curl -d "{\"price\": \"$9.99\"}" https://api.example.com/order
Windows CMD -- Utilise les guillemets doubles avec des guillemets internes échappés :
curl -d "{\"price\": \"$9.99\"}" https://api.example.com/order
Conseils pratiques pour utiliser curl
L'une des fonctionnalités les plus utiles mais sous-utilisées de curl est le flag -w (write-out). Il vous permet d'afficher des informations spécifiques sur la requête après son exécution, comme le code de statut HTTP, le temps total, le temps de résolution DNS ou la taille de la réponse. Pour des tests API rapides, curl -s -o /dev/null -w "%{http_code}\n" https://api.example.com/health vous donne uniquement le code de statut sans afficher le corps -- parfait pour les scripts de health check. Vous pouvez aussi utiliser -w "%{time_total}\n" pour mesurer les temps de réponse en ligne de commande sans installer d'outils supplémentaires.
Lors du débogage de problèmes SSL/TLS, le flag -v (verbose) de curl affiche l'intégralité de la poignée de main TLS, y compris la chaîne de certificats, la version du protocole et la suite de chiffrement. C'est inestimable pour diagnostiquer les erreurs de certificat, tester la rotation des certificats ou vérifier qu'un serveur supporte une version TLS spécifique. Associez -v avec --tlsv1.2 ou --tlsv1.3 pour forcer une version TLS spécifique et tester la compatibilité.
Pour les workflows de test d'API, envisagez de sauvegarder les commandes curl fréquemment utilisées comme scripts shell ou alias. Une commande comme curl -s -H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" https://api.example.com/v1/ est fastidieuse à taper à répétition. La sauvegarder comme fonction ou alias avec l'URL de base et les en-têtes communs signifie que vous n'avez plus qu'à ajouter le endpoint spécifique et le corps pour chaque test. De nombreux développeurs maintiennent une collection de commandes curl dans un fichier requests.sh dans leur projet, qui sert également de documentation vivante de l'API.
Questions fréquentes
Comment envoyer un fichier comme corps de requête ?
Utilisez le préfixe @ avec -d pour lire le corps depuis un fichier : curl -X POST -d @payload.json -H "Content-Type: application/json" https://api.example.com/upload. Pour un upload multipart de fichier, utilisez -F "[email protected]".
Quelle est la différence entre -d et -F ?
-d envoie le corps comme un bloc unique (généralement application/x-www-form-urlencoded ou application/json). -F envoie en multipart/form-data, conçu pour l'upload de fichiers et les champs de formulaire mixtes. Utilisez -F lorsque vous devez uploader des fichiers accompagnés de données de formulaire.
Dois-je utiliser -k / --insecure pour ignorer la vérification TLS ?
Uniquement dans les environnements de développement avec des certificats auto-signés. N'utilisez jamais -k dans les scripts de production ou lors de l'envoi de credentials, car cela désactive la vérification des certificats et expose la connexion aux attaques de type man-in-the-middle.
Comment voir les en-têtes de réponse avec le corps ?
Utilisez -i (include) pour afficher les en-têtes de réponse avant le corps, ou -v (verbose) pour voir à la fois les en-têtes de requête et de réponse ainsi que les détails de la poignée de main TLS. Pour voir uniquement les en-têtes sans le corps, utilisez -I (requête HEAD) ou -o /dev/null -v pour ignorer le corps tout en affichant la sortie verbeuse.
curl peut-il suivre les redirections automatiquement ?
Oui. Utilisez -L (ou --location) pour suivre les redirections 3xx. Par défaut, curl s'arrête à la première redirection et affiche la réponse de redirection. Avec -L, il suit la chaîne jusqu'à atteindre une réponse finale. Vous pouvez limiter le nombre de redirections avec --max-redirs 5.
Comment gérer les cookies dans curl ?
Utilisez -b pour envoyer des cookies et -c pour sauvegarder les cookies reçus du serveur. Par exemple, curl -c cookies.txt https://example.com/login -d "user=alice" sauvegarde les cookies de connexion, et curl -b cookies.txt https://example.com/dashboard les renvoie. C'est utile pour tester les flux d'authentification qui reposent sur des cookies de session.
Outils associés
- HTTP Header Formatter - Formater les en-têtes à utiliser dans les commandes curl
- HTTP Status Code Lookup - Rechercher les codes de statut retournés par les requêtes curl
- CORS Header Explainer - Comprendre les en-têtes CORS lors du test d'API cross-origin
- Query String Parser/Builder - Construire des chaînes de requête à ajouter aux URL des requêtes curl
- User-Agent Parser - Analyser les chaînes User-Agent pour définir des valeurs personnalisées dans les requêtes curl