De la requête au code

Convertir curl en Python, JavaScript ou PHP

Passez de l’exemple d’une documentation API à un appel utilisable dans votre application. Collez la commande, choisissez le langage et vérifiez les données de la requête.

curlcode de requête
Conversion dans le navigateur
01

Collez une seule requête HTTP. Les guillemets POSIX et les continuations de ligne par barre oblique inverse sont acceptés.

POSTexample.com3 en-têtes
02
async function main() {
  const response = await fetch("https://example.com/api/messages", {
    method: "POST",
    headers: [
      ["Authorization", "Bearer YOUR_TOKEN"],
      ["Content-Type", "application/json"],
      ["Accept", "application/json"]
    ],
    body: "{\"message\":\"Hello from curl\",\"enabled\":true}",
    redirect: "manual",
    credentials: "omit"
  });
  console.log(response.status);
  console.log(await response.text());
}

main().catch(console.error);

Fetch dans le navigateur ou Node.js 18+

Avant d’exécuter le code

  • Aucune requête n’est envoyée. Le code contient l’URL, les en-têtes et les identifiants fournis : relisez-le avant de le partager.
  • Fetch dans le navigateur est soumis à CORS. Avec credentials: omit, les cookies ne sont pas envoyés automatiquement. Configurez les identifiants si nécessaire. Les redirections manuelles peuvent produire une réponse opaque.

Sans inscription ni exécution de commande. La saisie est traitée dans votre navigateur.

Réutiliser un exemple d’API dans votre application

Une documentation propose souvent une commande curl pour tester un service. Le convertisseur reprend son URL, ses en-têtes et son corps dans la syntaxe de votre langage. Vous pouvez ainsi préparer un script Python, un appel Fetch ou une intégration PHP sans ressaisir chaque valeur. La requête n’est pas exécutée pendant la conversion.

Préparer une commande qui se convertit correctement

Collez une commande curl contenant une seule URL HTTP ou HTTPS, puis choisissez la sortie. Vérifiez la méthode et le corps avant de copier ou télécharger le fichier. Les messages sous le code expliquent les différences de comportement.

Conservez les guillemets autour des valeurs contenant des espaces. Pour un export des outils de développement, utilisez la variante bash. Les variables du shell doivent être remplacées par leur valeur ; les fichiers, formulaires multipart et options avancées non prises en charge demandent une adaptation manuelle.

Quel code générer pour votre environnement ?

Python utilise Requests, à installer avec pip install requests. Le corps est transmis en octets UTF-8. PHP s’appuie sur l’extension cURL, qui doit être activée. JavaScript utilise Fetch, disponible dans le navigateur et dans les versions de Node.js compatibles.

Le texte JSON est conservé sans nouvelle sérialisation : les grands nombres et les clés répétées ne sont pas réécrits par cet outil. En revanche, le convertisseur ne vérifie pas la validité du JSON. Ajoutez les délais d’attente et la gestion des erreurs dont votre application a besoin.

curl fonctionne, mais le navigateur bloque la requête

Fetch reste soumis à CORS. Les en-têtes gérés par le navigateur sont omis et nommés dans les remarques. La sortie utilise credentials: omit : elle ne récupère pas automatiquement les cookies de votre session. Si vous devez définir ces en-têtes côté serveur, envisagez Python ou PHP.

Sans -L, les redirections Fetch sont manuelles et peuvent produire une réponse opaque dans le navigateur. Avec -L, la réécriture de la méthode et la transmission des identifiants dépendent de la bibliothèque. Contrôlez ces points dans l’environnement d’exécution.

Deux champs de formulaire portant le même nom

Les deux valeurs tag restent dans le corps. L’option --data-urlencode encode l’espace, puis le code Python transmet le texte obtenu. Cela évite de perdre un champ répété en le stockant dans un dictionnaire.

curl 'https://example.com/api/tags' --data-urlencode 'tag=cloud hosting' --data-urlencode 'tag=linux'
import requests

url = "https://example.com/api/tags"
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
body = "tag=cloud%20hosting&tag=linux".encode("utf-8")

response = requests.request(
    method="POST",
    url=url,
    headers=headers,
    data=body,
    allow_redirects=False,
    verify=True,
)
print(response.status_code)
print(response.text)

Comprendre les options curl

Option curlEffet dans le code
URL / --urlUne URL HTTP ou HTTPS complète
-X / --requestMéthode HTTP explicite
-H / --headerNom et valeur ; les doublons et valeurs vides nécessitent une vérification
-d / --data / --data-raw / --data-binaryCorps intégré à la commande, ordre des arguments conservé
--data-urlencode / -GEncodage des valeurs ; -G les place dans la chaîne de requête
--jsonTexte JSON conservé, en-têtes JSON par défaut ajoutés
-u / --userAuthentification Basic avec username:password
-L / -I / -kRedirections, HEAD et vérification TLS ; -k impossible avec Fetch
-b / -A / -eCookie, User-Agent et Referer soumis aux règles du navigateur
--compressed / -s / -S / -v / -iDécompression par la bibliothèque ; affichage du terminal non reproduit

Questions sur la conversion

Le convertisseur contacte-t-il mon API ?

Non. L’analyse et la génération se font dans le navigateur. Ni l’URL ni les identifiants ne sont testés. Seule l’exécution ultérieure du code envoie la requête.

Puis-je utiliser « Copy as cURL » ?

Oui, pour une requête unique au format POSIX utilisant les options prises en charge. Préférez la variante bash. Une option non reconnue bloque la génération au lieu d’être ignorée.

Comment convertir curl en Python Requests ?

Sélectionnez Python, copiez le code et installez Requests dans votre environnement. Vérifiez les remarques : aucun délai d’attente n’est ajouté automatiquement et les paramètres proxy ou .netrc de l’environnement peuvent intervenir.

Pourquoi certains en-têtes disparaissent-ils ?

Fetch ne permet pas de définir librement les en-têtes réservés au navigateur ; ils sont signalés dans les remarques. Content-Length est recalculé par la bibliothèque HTTP.

Les mots de passe sont-ils masqués dans le fichier ?

Non. Les valeurs fournies sont reprises dans le code. Relisez le fichier avant de le partager et adaptez le stockage des secrets à votre application.

Documentation: curl · Requests · Fetch