Convertisseur curl vers code
Collez une commande curl : obtenez son équivalent en JavaScript (fetch) ou en Python (requests), prêt à coller dans votre code.
const headers = {
"Content-Type": "application/json",
"Authorization": "Bearer TOKEN",
}
fetch("https://api.exemple.fr/users", {
method: "POST",
headers,
body: "{\"nom\":\"Ada\"}",
})
.then((res) => res.text())
.then((data) => console.log(data))
.catch((err) => console.error(err))Ce que fait réellement le convertisseur
L'outil découpe la commande comme le ferait un shell — continuations de ligne, guillemets simples littéraux, guillemets doubles avec échappements — puis en extrait quatre éléments : méthode HTTP, URL, en-têtes et corps de requête. Il reconstruit ensuite le code équivalent en fetch (JavaScript) ou avec la bibliothèque requests (Python). Aucune requête n'est exécutée : c'est une traduction de texte, pas un client HTTP.
Options curl prises en charge
| Option | Traitement |
|---|---|
| -X, --request | Fixe la méthode HTTP (GET, POST, PUT, PATCH, DELETE…). |
| -H, --header | Ajoute un en-tête. Répétable ; la valeur doit contenir un « : ». |
| -d, --data, --data-raw, --data-urlencode | Corps de la requête. Plusieurs occurrences sont jointes par « & », comme le fait curl. |
| --data-binary, --data-ascii | Corps de la requête, concaténé sans séparateur au lieu d'être joint par « & ». |
| -u, --user | Traduit en en-tête Authorization: Basic, avec l'encodage Base64 du couple identifiant:mot de passe. |
| -A, --user-agent | Traduit en en-tête User-Agent. |
| -b, --cookie | Traduit en en-tête Cookie. |
| --url | Indique l'URL explicitement, à la place de l'argument positionnel. |
| -s, -k, -i, -v, -L, --compressed, -# | Options sans effet sur le code généré : ignorées silencieusement, y compris groupées (-sSL). |
| -o, -e, --connect-timeout, --max-time, --cacert | Reconnues et ignorées avec leur valeur : elles n'ont pas d'équivalent direct en fetch ou requests. |
Toute autre option provoque un message d'erreur nommant l'option en cause. C'est un choix délibéré : un parseur qui ignorerait --form produirait un code compilable mais faux, bien plus coûteux à déboguer qu'un refus explicite. À noter également, le corps issu de --data-urlencode est repris tel quel, sans encodage supplémentaire : encodez la valeur vous-même si elle contient des caractères spéciaux.
Quand utiliser cet outil
Le cas le plus fréquent est le « Copier comme cURL » de l'onglet Réseau du navigateur : la commande obtenue reproduit une requête réelle de l'application, et sa traduction donne un point de départ fiable pour un script ou un test. Vient ensuite la documentation d'API, presque toujours illustrée en curl, qu'il faut transposer dans le langage du projet. Enfin, un bogue reproduit en ligne de commande se rejoue plus facilement dans le code une fois converti, sans risque d'erreur de recopie sur un en-tête ou un jeton. Relisez toujours le corps généré : il est transmis comme une chaîne brute, et pour du JSON en Python, json= est souvent préférable à data=.
La méthode (-X/--request), l'URL, les en-têtes (-H/--header, répétables), le corps (-d, --data, --data-raw, --data-binary, --data-ascii, --data-urlencode), l'authentification basique (-u/--user), le User-Agent (-A) et les cookies (-b). Les options courantes sans effet sur le code généré (-s, -L, --compressed…) sont ignorées silencieusement. Une option non reconnue déclenche un message d'erreur explicite plutôt qu'un résultat incomplet.
Faites un clic droit sur la requête, « Copier » puis « Copier comme cURL », et collez le résultat tel quel : les retours à la ligne échappés par une barre oblique inverse, les guillemets simples et les guillemets doubles sont interprétés comme dans un shell. Pensez à retirer les cookies de session avant de partager le code obtenu.
Un message d'erreur clair s'affiche (guillemet non fermé, en-tête sans « : », URL manquante, option inconnue…) au lieu de générer silencieusement un code faux ou incomplet.
Non. L'analyse de la commande et la génération du code se font entièrement dans votre navigateur, en JavaScript — y compris si votre commande contient un jeton d'authentification ou une donnée sensible. Aucune requête n'est exécutée : l'outil ne fait que découper du texte.
Oui : sans -X explicite, la méthode est GET, sauf si vous fournissez un corps (-d, --data…) auquel cas curl (et cet outil) utilisent POST par défaut, comme le fait réellement curl.
Les formulaires multipart (-F/--form) et l'envoi de fichier (-T) ne sont pas gérés : ils produisent l'erreur « Option non reconnue », plutôt qu'un code faux. La syntaxe -d @fichier.json est acceptée mais reprise littéralement, le texte @fichier.json devenant le corps de la requête : aucun fichier n'est lu, l'outil n'a pas accès à votre disque. Ces cas se réécrivent à la main, avec FormData en JavaScript ou l'argument files= en Python.