Générateur de commande curl

Indiquez la méthode HTTP, l'URL, les en-têtes, le corps et le mode d'authentification dans le formulaire pour générer une commande curl prête à copier et exécuter. Aucune requête n'étant réellement envoyée, les restrictions CORS ne s'appliquent jamais.

Options curl les plus courantes

Option Description
-X, --request <method> Indique la méthode HTTP (GET, POST, PUT, PATCH, DELETE, etc.). Si elle est omise, GET est utilisé sans corps et POST lorsqu'un corps est présent.
-H, --header <header> Ajoute un en-tête de requête. Répétez -H pour en ajouter plusieurs.
-d, --data <data> Envoie un corps de requête. Si -X n'est pas précisé, l'envoi se fait automatiquement en POST avec Content-Type: application/x-www-form-urlencoded.
-u, --user <user:password> Indique le nom d'utilisateur et le mot de passe pour l'authentification Basic au format "user:password".
-k, --insecure Ignore la vérification du certificat SSL. Destiné aux environnements de développement utilisant des certificats auto-signés. Déconseillé en production.
-L, --location Suit automatiquement la destination indiquée par l'en-tête Location lorsque le serveur renvoie une redirection 3xx.
-v, --verbose Affiche l'échange détaillé de la requête et de la réponse, en-têtes compris, sur la sortie d'erreur standard. Utile pour le débogage.
--compressed Ajoute un en-tête Accept-Encoding, demandant et décompressant automatiquement les réponses compressées avec gzip ou des formats similaires.
-o, --output <file> Enregistre le corps de la réponse dans le fichier indiqué au lieu de la sortie standard.
-F, --form <name=content> Envoie des données de formulaire ou des fichiers au format multipart/form-data. Indiquez "@chemin_du_fichier" pour l'envoi de fichiers.

Composer une commande curl depuis un formulaire

Indiquez dans le formulaire la méthode, l'adresse, les en-têtes, le corps et l'authentification, et il en sort une commande curl prête à coller dans un terminal. **Cet outil n'envoie jamais réellement la requête : il n'est donc pas lié par les restrictions CORS du navigateur.** La commande se compose même pour une API qui refuserait une requête émise depuis une page.

**Ce qui fait trébucher avec curl, c'est le rapport entre la méthode et le corps.** Joignez un corps avec `-d` et **la méthode devient POST d'elle-même, quand bien même vous n'en auriez écrit aucune.** Vouloir envoyer un PUT ou un PATCH en ne fournissant que `-d` lance donc un POST non voulu. L'autre erreur fréquente consiste à envoyer du JSON en oubliant `Content-Type: application/json` ; curl l'expédie alors comme `application/x-www-form-urlencoded`, et **le serveur ne le lit nullement comme du JSON.** En collant la commande produite dans un terminal, prenez garde aussi aux guillemets de l'interpréteur : **dans des apostrophes les variables ne sont pas substituées, dans des guillemets doubles elles le sont.**

Comment s'en servir

  1. Indiquez la méthode et l'adresse Choisissez GET pour récupérer et POST pour envoyer.
  2. Ajoutez vos en-têtes **Si vous envoyez du JSON, n'oubliez pas `Content-Type: application/json`.**
  3. Écrivez le corps **Joindre un corps rend la méthode POST d'elle-même là où aucune n'était indiquée.**
  4. Recopiez la commande et exécutez-la La coller dans un terminal suffit.

Astuces pour en tirer le meilleur parti

  • La commande générée peut être collée directement dans un terminal, un script shell ou un fichier de configuration CI/CD et exécutée telle quelle. Toutes les valeurs sont déjà échappées avec des guillemets simples.
  • Un avertissement s'affiche si vous saisissez un corps alors que la méthode est encore GET. En effet, curl envoie automatiquement la requête en POST lorsque -d est utilisé sans -X ; cet avertissement permet d'éviter un comportement inattendu.
  • En cochant « Ajouter automatiquement Content-Type: application/json », l'en-tête Content-Type, souvent oublié lors de l'appel d'une API JSON, est ajouté automatiquement.
  • Les valeurs saisies pour l'authentification Basic comme pour le jeton Bearer sont traitées entièrement dans votre navigateur et ne sont jamais envoyées à un serveur.
  • Le -k généré (ignorer la vérification du certificat) n'est qu'une solution de contournement temporaire réservée au développement local avec des certificats auto-signés. Évitez de l'utiliser durablement face à des API de production.

Dans quels cas s'en servir

Pour éprouver le comportement d'une API

**Une API qu'on ne peut appeler depuis le navigateur s'essaie tout de même avec curl, sans que CORS y fasse obstacle.**

Pour inscrire une commande dans une procédure

Vous consignez en quoi consiste une requête sous une forme que chacun peut reproduire.

Pour partager les étapes d'une reproduction de panne

**Remettre à quelqu'un une commande à exécuter donne une reproduction bien moins affectée par les écarts d'environnement.**

Pour apprendre les options de curl

Vous voyez en quelle option se change chaque champ du formulaire.

Vocabulaire de curl

-X
Indique expressément la méthode. **`-d` la rendant POST même sans indication, c'est ce qu'il faut pour PUT ou DELETE.**
-H
Ajoute un en-tête. Écrit plusieurs fois, il en joint autant.
-d
Indique le corps de la requête. **L'écrire rend la méthode POST, et le type de contenu par défaut devient l'encodage de formulaire.**
-u
Indique le nom d'utilisateur et le mot de passe de l'authentification de base, écrits `utilisateur:motdepasse`.
Jeton Bearer
Le procédé envoyant les identifiants sous la forme `Authorization: Bearer ...`. Quantité d'API adoptent cette forme.
-i et -v
Affichent les en-têtes de réponse et le détail de l'échange. **L'un comme l'autre gagnent leur place quand rien ne fonctionne.**

Questions fréquentes

Non. Cet outil se contente de construire la chaîne de commande et n'envoie jamais de véritable requête HTTP. La requête n'est envoyée que lorsque vous copiez la commande générée dans un terminal et l'exécutez vous-même. Pour envoyer réellement la requête et consulter le résultat, utilisez notre outil complémentaire, le « Testeur d'API REST ».

Oui. En saisissant la méthode, l'URL, les en-têtes et le corps d'une requête construite dans Postman, cet outil génère une commande curl que vous pouvez copier-coller directement. Pratique pour l'insérer dans des scripts CI/CD ou de la documentation.

C'est techniquement possible, mais il faut être prudent. Si curl reçoit -d (données du corps) sans l'option -X, il envoie automatiquement la requête en POST. Dans le cas rare où vous devez conserver GET tout en envoyant un corps, ajoutez manuellement -X GET à la commande générée.

Non. Toutes les informations d'authentification que vous saisissez sont traitées entièrement par JavaScript dans votre navigateur et ne sont jamais envoyées au serveur de toolbase.cc. Elles n'atteignent l'API réelle que lorsque vous exécutez vous-même la commande générée dans votre propre environnement.

« -k (--insecure) » ignore la vérification du certificat SSL et ne doit servir que de solution de contournement temporaire pour les environnements de développement local utilisant des certificats auto-signés. Son usage en production ou pour des échanges contenant des informations sensibles n'est pas recommandé, car il expose à un risque d'attaque de l'homme du milieu.
Tool-kun

Anecdote — pourquoi curl est l'outil que tout le monde utilise sans presque jamais le connaître

curl est un outil en ligne de commande permettant de transférer des données via des URL, créé en 1996 par l'ingénieur suédois Daniel Stenberg. Il est né d'un petit script destiné à récupérer des taux de change pour un bot de discussion IRC, avant de devenir un projet gigantesque prenant en charge plus de 25 protocoles, dont HTTP, FTP et SMTP.

curl est considéré comme l'un des logiciels les plus utilisés au monde. Il est intégré dans pratiquement tous les appareils connectés à internet — smartphones, voitures, appareils électroménagers, consoles de jeux et même sondes spatiales (il a notamment été utilisé lors de missions de la NASA vers Mars) — avec un parc installé estimé à plusieurs dizaines de milliards d'unités. Malgré cette omniprésence, il reste un exemple classique d'infrastructure invisible, quasiment inconnue en dehors des cercles de développeurs.

En 2019, Stenberg a été distingué par la Linux Foundation pour ses contributions aux technologies fondamentales du Web. Il demeure aujourd'hui le mainteneur principal à la tête du développement de curl, réputé pour avoir su préserver avec soin la compatibilité ascendante pendant plus de vingt ans.

Même aujourd'hui, alors que des outils graphiques comme Postman se sont largement répandus, les commandes curl continuent d'être utilisées dans les README, la documentation officielle et les étapes de vérification des API. La raison est simple : curl ne nécessite aucune installation et est préinstallé sur presque tous les environnements Linux et macOS, ce qui permet d'exécuter une seule commande sur-le-champ et d'en partager le résultat, avec un niveau de reproductibilité difficile à égaler.