cURL vers code : convertir les requêtes API entre langages instantanément
Comprendre la syntaxe des drapeaux cURL, les modèles d'API REST courants, et comment traduire précisément les commandes cURL en JavaScript fetch, Python requests et Node.js axios — incluant le workflow « Copier en tant que cURL » des DevTools.
Chaque API a une documentation. Presque universellement, cette documentation inclut des exemples de code en cURL — le client HTTP en ligne de commande fourni avec chaque système de type Unix et lingua franca de la documentation API depuis des décennies. Le problème est que vous n'écrivez pas des scripts shell. Vous écrivez du JavaScript, Python, Go ou Ruby, et vous devez traduire cette commande cURL en code fonctionnel avant de pouvoir l'utiliser.
Cette traduction est fastidieuse et sujette aux erreurs. Les en-têtes, les schémas d'authentification, les corps de requête et l'encodage d'URL doivent tous être mappés aux bons appels de méthode dans le bon langage. Le Convertisseur cURL BrowseryTools fait cela automatiquement — collez une commande cURL et obtenez le code équivalent en JavaScript fetch, Python requests, Node.js axios et plus encore. Gratuit, sans inscription, tout reste dans votre navigateur.
Qu'est-ce que cURL ?
cURL (Client URL) est un outil en ligne de commande pour transférer des données via des URL. Il prend en charge HTTP, HTTPS, FTP, WebSockets et des dizaines d'autres protocoles. Pour les développeurs, il est le plus couramment utilisé pour effectuer des requêtes HTTP depuis le terminal — tester un point de terminaison d'API, télécharger un fichier ou déboguer une authentification.
cURL est installé par défaut sur macOS et la plupart des distributions Linux. Sous Windows, il est intégré au système d'exploitation depuis Windows 10. Cette omniprésence est exactement pourquoi les équipes de documentation API se tournent par défaut vers cURL pour les exemples — elles peuvent être certaines que n'importe quel développeur lisant la documentation peut exécuter l'exemple immédiatement, sans rien installer.
Anatomie d'une commande cURL
Une commande cURL est construite à partir d'une URL de base et d'un ensemble de drapeaux. Voici un exemple complet couvrant les drapeaux les plus importants :
curl -X POST https://api.example.com/v1/users \
-H "Content-Type: application/json" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
-d '{"name": "Alice", "email": "alice@example.com"}'Décomposition de chaque drapeau :
-X POST— définit la méthode HTTP. Les valeurs valides sont GET, POST, PUT, PATCH, DELETE, etc. Si omis et que-dest présent, cURL passe par défaut à POST.-H "En-tête: Valeur"— ajoute un en-tête de requête. Peut être répété plusieurs fois pour plusieurs en-têtes.-d '...'— le corps de la requête. Pour JSON, combinez avec-H "Content-Type: application/json". cURL encode le corps en URL par défaut sauf si vous utilisez--data-raw.--data-raw '...'— envoie le corps exactement tel quel sans encodage URL. Requis quand le corps contient des caractères comme@que-dinterpréterait spécialement.-u identifiant:motdepasse— raccourci d'authentification basique. cURL l'encode en un en-tête Authorization Base64 pour vous.-s— mode silencieux ; supprime la barre de progression. Presque toujours utilisé dans les scripts.-v— mode verbose ; affiche les en-têtes de requête et de réponse. Inestimable pour déboguer les échecs d'authentification.-o nomdefichier— écrit la sortie dans un fichier plutôt que dans stdout.
Modèles cURL courants pour les API REST
Requête GET avec paramètres de requête
curl "https://api.example.com/users?page=2&limit=20" \ -H "Authorization: Bearer TOKEN"
Les paramètres de requête vont directement dans l'URL. Mettez l'URL entière entre guillemets pour éviter que le shell n'interprète le & comme un opérateur d'arrière-plan.
POST avec corps JSON
curl -X POST https://api.example.com/orders \
-H "Content-Type: application/json" \
-H "X-API-Key: your-api-key" \
--data-raw '{"product_id": 42, "quantity": 3}'Envoi de fichier (multipart/form-data)
curl -X POST https://api.example.com/upload \ -H "Authorization: Bearer TOKEN" \ -F "file=@/path/to/document.pdf" \ -F "description=Q4 Report"
Le drapeau -F envoie des données multipart/form-data. Le préfixe @signifie « lire depuis le fichier ». C'est le format utilisé pour les téléversements d'images, les API de traitement de documents et tout point de terminaison acceptant des données binaires.
Conversion de cURL en JavaScript fetch
// cURL d'origine :
// curl -X POST https://api.example.com/v1/users \
// -H "Content-Type: application/json" \
// -H "Authorization: Bearer TOKEN" \
// -d '{"name": "Alice", "email": "alice@example.com"}'
const response = await fetch("https://api.example.com/v1/users", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer TOKEN",
},
body: JSON.stringify({
name: "Alice",
email: "alice@example.com",
}),
});
const data = await response.json();Conversion de cURL en Python requests
import requests
response = requests.post(
"https://api.example.com/v1/users",
headers={
"Authorization": "Bearer TOKEN",
},
json={
"name": "Alice",
"email": "alice@example.com",
},
)
data = response.json()Le paramètre json= de la bibliothèque requests gère à la fois la sérialisation et la définition automatique de l'en-tête Content-Type: application/json— pas besoin de le définir manuellement.
Conversion de cURL en Node.js avec axios
const axios = require("axios");
const response = await axios.post(
"https://api.example.com/v1/users",
{
name: "Alice",
email: "alice@example.com",
},
{
headers: {
Authorization: "Bearer TOKEN",
},
}
);
const data = response.data;Comment fonctionne « Copier en tant que cURL » dans les DevTools du navigateur
L'une des fonctionnalités les plus utiles dans les DevTools du navigateur est « Copier en tant que cURL ». Dans Chrome, Firefox ou Safari : ouvrez les DevTools, allez dans l'onglet Réseau, effectuez une requête (connectez-vous, cliquez sur un bouton, chargez une page), faites un clic droit sur la requête dans la liste réseau et sélectionnez « Copier en tant que cURL ».
Le navigateur génère une commande cURL complète qui inclut chaque en-tête envoyé par le navigateur — y compris les cookies, les tokens de session, les tokens CSRF et tout autre matériel d'authentification. Cela signifie que vous pouvez rejouer la requête exacte que le navigateur a faite, avec tout son contexte d'authentification, depuis le terminal ou depuis du code.
C'est inestimable pour le débogage : si la requête du navigateur fonctionne mais que la requête de votre code échoue, collez les deux dans un outil de diff et trouvez la différence d'en-tête ou de corps. Vous pouvez aussi coller le cURL copié directement dans le Convertisseur cURL BrowseryTools pour obtenir le code équivalent dans votre langage préféré — le convertisseur gère automatiquement tout l'échappement, les guillemets et la traduction des drapeaux.
Résumé
cURL est le langage universel de HTTP. Les docs API l'utilisent parce que tout le monde peut l'exécuter. Les DevTools le copient parce qu'il capture chaque détail d'une requête. Apprendre à lire cURL couramment — et à le traduire précisément dans le langage dans lequel vous travaillez — est une compétence pratique qui porte ses fruits chaque fois que vous intégrez une nouvelle API. Passez-vous de la traduction manuelle fastidieuse et utilisez le Convertisseur cURL BrowseryTools pour obtenir du code propre et fonctionnel en quelques secondes.
Try the Tools — 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools →