Convertisseur cURL en Fetch (JS & Node)

Convertisseur cURL en Fetch (JS & Node)

Convertissez instantanément vos commandes cURL en syntaxe Fetch API. Analysez en-têtes HTTP, tokens d'authentification, cookies et payloads JSON en code JavaScript async/await moderne.

Modèles prédéfinis
Commande cURL source
Format du code généré
Délai d'expiration (Timeout en ms)10,000 ms
/**
 * Generated by ToolsAA cURL to Fetch Engine (ES2022 async/await)
 * Zero external dependencies. 100% Client-Side Executed.
 */
async function executeRequest() {
  const url = 'https://api.stripe.com/v1/payment_intents';

  const body = new URLSearchParams({
    'amount': '2000',
    'currency': 'usd',
    'payment_method_types[]': 'card',
  });

  const controller = new AbortController();
  const timeoutId = setTimeout(() => controller.abort(), 10000);

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Basic ' + (typeof window !== 'undefined' ? btoa('sk_test_51MzEXAMPLESECRETKEY:') : Buffer.from('sk_test_51MzEXAMPLESECRETKEY:').toString('base64')),
      },
    body,
    credentials: 'include',
      signal: controller.signal,
    });

    clearTimeout(timeoutId);

    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status} ${response.statusText}`);
    }

    // Automatic MIME response parser
    const contentType = response.headers.get('content-type') || '';
    if (contentType.includes('application/json')) {
      const data = await response.json();
      return data;
    }

    return await response.text();
  } catch (error) {
    clearTimeout(timeoutId);
    if ((error as any)?.name === 'AbortError') {
      console.error('Request timed out after 10000ms');
    }
    throw error;
  }
}

// Call request
executeRequest()
  .then(data => console.log('Response Payload:', data))
  .catch(err => console.error('Fetch Execution Failed:', err));

Pipeline d'analyse & Transformation AST

Tokens d'authentification: 12•En-têtes HTTP: 1•Score de conformité 76%•BROWSER
1. Analyse de la commande cURLExtraction des arguments et options CLI12 tokens analysés (220 caractères)2. Parsing des en-têtes & AuthAuthentification active • Connexion HTTPS / TLS sécuriséePOST1 En-têtes HTTP3. Traitement du payloadURLENCODED Aperçu du payload52 o (Body)4. Synthèse du code Fetch76%BROWSER55 lignes (10000ms)
Métrique principaleRFC 9110 DFA
Méthode HTTPPOST
Total des en-têtes1
Type de contenu (Content-Type)URLENCODED
Efficacité & Capacité0 octet envoyé au serveur (100 % local)
Sortie netteBROWSER
Référence technique et guide d'architecture

Convertisseur cURL en Fetch (JS & Node) — Guide de référence

Convertissez instantanément vos commandes cURL en syntaxe Fetch API. Analysez en-têtes HTTP, jetons d'authentification, cookies et corps JSON en code async/await moderne.

Convertisseur cURL en Fetch (JS & Node) — Guide de référence — Architecture en mémoire côté client et flux de données
Convertisseur cURL en Fetch (JS & Node) — Guide de référence — Architecture en mémoire côté client et flux de données

Paramètres clés et contrôles

Chaîne de commande cURL CLICommande Shell POSIX (Bash / Zsh)

Invocation brute en ligne de commande commençant par 'curl'. Prend en charge les retours à la ligne avec antislash, l'échappement des guillemets simples et doubles, ainsi que les conventions de flags POSIX standard.

Par défaut : curl -X GET 'https://api.example.com/data'
Runtime cible et syntaxe du frameworkVariante cible JavaScript / TypeScript

Définit le formatage du code généré : syntaxe moderne async/await pour navigateur ES2022, TypeScript fortement typé avec types génériques ApiResponse, syntaxe serveur Node.js 18+ avec AbortSignal, Next.js App Router avec tags de cache, ou syntaxe client Axios.

Par défaut : browser
Résolution de la méthode HTTP (-X / --request)Verbe HTTP RFC 9110 (GET, POST, PUT, DELETE, PATCH, HEAD)

Verbe de la requête HTTP. Lorsque l'option -X est omise, cURL utilise par défaut GET, sauf en présence d'options transmettant un corps de requête (-d, --data, -F), qui basculent implicitement la méthode par défaut vers POST.

Par défaut : GET
En-têtes de requête HTTP (-H / --header)Paires clé-valeur d'en-tête HTTP

En-têtes de métadonnées personnalisées pour la requête. L'implémentation de fetch dans le navigateur applique des restrictions sur les en-têtes interdits (par exemple, Host, Content-Length ou Cookie ne peuvent pas être écrasés manuellement via l'API Headers pour des raisons d'isolation de sécurité).

Par défaut : Content-Type: application/json
Corps des données utiles (-d / --data / -F)Entité du corps de requête HTTP

Charge utile de données transférée dans les requêtes POST, PUT ou PATCH. Analysée dynamiquement sous forme de JSON.stringify() pour les chaînes JSON, URLSearchParams() pour application/x-www-form-urlencoded, ou FormData() pour les téléversements multipart.

Par défaut : {}
Authentification Basic et Bearer (-u / Bearer)Chaîne d'identifiants d'autorisation

Identifiants d'authentification. L'option cURL -u utilisateur:mot_de_passe est synthétisée en 'Authorization: Basic <base64>', tandis que -H 'Authorization: Bearer <token>' est extraite sous forme de variables structurées avec masquage optionnel des données sensibles.

Par défaut : Bearer <TOKEN>

Conseils de pro et bonnes pratiques

Fetch ne rejette pas les statuts HTTP 4xx ou 5xx (Le piège de response.ok)

Contrairement à la CLI cURL (qui affiche les codes d'erreur) ou à Axios (qui rejette la promesse en cas de réponse 4xx/5xx), l'API Fetch native de JavaScript ne rejette sa promesse qu'en cas de panne réseau avérée ou de blocage CORS. Un code 404 Not Found, 401 Unauthorized ou 500 Internal Server Error résout la promesse normalement. Vous devez impérativement tester 'if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);' avant d'appeler response.json() ou response.text().

Ne définissez jamais manuellement Content-Type pour Multipart/Form-Data dans Fetch

Lors de la conversion d'une commande cURL d'envoi de fichier avec -F ('--form') vers Fetch, ne définissez JAMAIS manuellement l'en-tête 'Content-Type: multipart/form-data'. Cette déclaration supprime le paramètre dynamique de délimiteur (ex. 'boundary=----WebKitFormBoundary...') généré automatiquement par le navigateur pour segmenter la charge utile. Transmettez simplement l'instance de FormData directement à l'option body, et le navigateur calculera automatiquement le Content-Type adéquat avec son délimiteur boundary.

Pièges de sérialisation entre données de formulaire cURL -d et JSON

Dans cURL, l'utilisation de -d sans en-tête Content-Type explicite prend par défaut la valeur 'application/x-www-form-urlencoded' et non JSON. Beaucoup de développeurs encapsulent par erreur -d 'cle=valeur&autre=donnee' dans un JSON.stringify(). Vérifiez systématiquement si vos données sont des paires clé-valeur (qui nécessitent 'new URLSearchParams({ cle: 'valeur', autre: 'donnee' })') ou du JSON valide (qui requiert 'JSON.stringify(data)' et un en-tête explicite 'Content-Type: application/json').

Restrictions sur les en-têtes interdits du navigateur face aux capacités de cURL dans le terminal

Dans un terminal, cURL peut forger n'importe quel en-tête HTTP, y compris 'Cookie', 'User-Agent', 'Referer' et 'Host'. Cependant, dans l'API Fetch JavaScript du navigateur, la spécification W3C Fetch classe ces en-têtes comme 'Forbidden Header Names' pour empêcher les failles CSRF et le vol de session. Le navigateur ignorera silencieusement tout en-tête 'Cookie' manuel ; utilisez plutôt 'credentials: "include"' (ou 'same-origin') afin que le gestionnaire de cookies du navigateur associe automatiquement vos jetons de session.

Pièges courants et dépannage

⚠️TypeError: Failed to fetch (Erreur CORS dans le navigateur alors que cURL fonctionne dans le terminal)

cURL est un utilitaire en ligne de commande non soumis à la stratégie de même origine (Same-Origin Policy). Lors de l'exécution de fetch() dans le code JavaScript côté client vers une API tierce ne renvoyant pas l'en-tête 'Access-Control-Allow-Origin: *', le navigateur bloque la réponse. Pour résoudre cela, effectuez l'appel d'API depuis un serveur back-end (Node.js, route Next.js Route Handler ou Cloudflare Worker) où CORS ne s'applique pas, ou configurez les en-têtes CORS appropriés sur le serveur de destination.

⚠️SyntaxError: Unexpected token in JSON at position 0 lors de l'analyse de la réponse

Cette erreur survient lors de l'appel de 'await response.json()' sur un point de terminaison d'API ayant renvoyé un corps vide (par exemple, HTTP 204 No Content), une page d'erreur HTML (ex. 502 Bad Gateway) ou du texte brut. Vérifiez systématiquement 'response.headers.get('content-type')?.includes('application/json')' avant d'appeler response.json(), ou inspectez 'const text = await response.text()' combiné à un bloc try/catch sécurisé autour de JSON.parse.

⚠️Échec du téléversement de fichier multipart avec l'erreur 'No boundary found' sur le serveur back-end

Cela se produit lorsque 'Content-Type: multipart/form-data' est explicitement renseigné dans les en-têtes de fetch. Lorsque vous utilisez FormData(), retirez complètement l'en-tête 'Content-Type' de l'objet headers. Le navigateur ou le runtime Node.js injectera automatiquement 'multipart/form-data; boundary=----WebKitFormBoundary...' avec la valeur exacte de délimitation calculée.

⚠️Échec de l'analyse d'une commande cURL contenant des retours à la ligne avec antislash

Lors de la copie de commandes cURL multilignes depuis des scripts bash ou de la documentation technique, la présence d'espaces après le caractère antislash ('\ ') amène bash et les analyseurs syntaxiques à interpréter le saut de ligne comme du texte littéral plutôt que comme une continuation d'arguments. Notre analyseur normalise automatiquement les séquences '\ ' et '\ ', en supprimant les espaces parasites et en fusionnant les fragments du terminal en une suite d'arguments unifiée.

Foire aux questions (FAQ)

Comment convertir une commande cURL en code JavaScript Fetch ?▼

Pour convertir une commande cURL en Fetch, extrayez l'URL cible de la ligne de commande, mappez -X vers la propriété 'method' de fetch (GET, POST, PUT, DELETE), convertissez chaque argument -H en paires clé-valeur dans l'objet 'headers', formatez les données -d ou --data en 'JSON.stringify(payload)' ou 'new URLSearchParams(payload)' dans la propriété 'body', puis encapsulez l'appel dans une fonction 'async/await' avec 'const response = await fetch(url, options)'.

Pourquoi une requête cURL fonctionne-t-elle dans le terminal mais échoue-t-elle avec une erreur CORS dans fetch ?▼

cURL fonctionne comme un client HTTP brut sans le bac à sable de sécurité d'un navigateur, ignorant ainsi la politique de même origine (Same-Origin Policy) et les règles CORS (Cross-Origin Resource Sharing). Les navigateurs modernes appliquent ces restrictions pour empêcher les applications web non autorisées de lire des données sensibles inter-origines. Si le serveur cible ne renvoie pas d'en-tête 'Access-Control-Allow-Origin' correspondant à l'origine de votre application web, le navigateur bloque la requête fetch. Pour y remédier, faites transiter la requête par un proxy back-end ou une fonction API serverless.

Comment gérer l'authentification Basic Auth cURL (-u utilisateur:mot_de_passe) dans Fetch ?▼

Dans cURL, l'option '-u utilisateur:mot_de_passe' transmet une authentification HTTP Basic. Dans le code JavaScript Fetch moderne pour navigateur, encodez les identifiants en Base64 via 'btoa("utilisateur:mot_de_passe")' et transmettez-les sous la forme 'headers: { Authorization: `Basic ${btoa("utilisateur:mot_de_passe")}` }'. Dans Node.js, utilisez 'Buffer.from("utilisateur:mot_de_passe").toString("base64")' pour obtenir exactement le même en-tête standard.

Comment transmettre des cookies dans l'API Fetch comme avec l'option cURL -b ?▼

Dans le JavaScript côté navigateur, l'en-tête 'Cookie' est un nom d'en-tête interdit (Forbidden Header Name) qui ne peut pas être défini manuellement dans fetch() pour des impératifs de sécurité. Pour envoyer les cookies stockés par le navigateur pour le domaine cible, définissez 'credentials: "include"' dans l'objet d'options de fetch. Dans un environnement serveur Node.js (où ces restrictions de navigateur ne s'appliquent pas), vous pouvez passer directement 'Cookie: session_id=xyz' dans l'objet headers.

Quelle est la différence entre -d, --data-raw et --data-urlencode de cURL dans Fetch ?▼

Dans cURL, '-d' et '--data-raw' transmettent la chaîne brute fournie, avec un Content-Type par défaut à 'application/x-www-form-urlencoded' sauf substitution explicite via -H. Dans Fetch, s'il s'agit de données JSON, vous devez les sérialiser avec JSON.stringify() et spécifier 'Content-Type: application/json'. Si cURL utilise '--data-urlencode', les valeurs des paramètres sont encodées au format URL avant l'envoi, ce qui est géré nativement dans Fetch en passant les paires clé-valeur à 'new URLSearchParams({ cle: valeur }).toString()'.

Outils et utilitaires connexes

Tous les outils →
Validateur Sitemap XML & Syntaxe URLDéveloppement

Validez instantanément vos sitemaps XML et fichiers d'index. Vérifiez le seuil des 50 000 URLs, la syntaxe W3C Datetime, les balises hreflang, schémas médias et erreurs Google Search Console.

Ouvrir l'outil→
Simulateur SERP Google & Aperçu SnippetDéveloppement

Prévisualisez vos extraits Google SERP sur ordinateur et mobile avec troncature précise au pixel près, badges rich snippets, sitelinks et score CTR en direct.

Ouvrir l'outil→
Générateur Dégradé Mesh CSS & Fond SVGDéveloppement

Générez des dégradés de maillage CSS multi-points, des arrière-plans animés et des maillages SVG. Ajustez les points de contrôle, le grain argentique et exportez le code CSS ou Tailwind.

Ouvrir l'outil→
Générateur d'URL UTM & CampagnesDéveloppement

Créez, validez et générez par lots vos liens de suivi de campagne Google Analytics GA4 avec notre générateur UTM gratuit. Nettoyez vos URL, extrayez les balises existantes et exportez des QR codes.

Ouvrir l'outil→
Formateur & Validateur JSONDéveloppement

Formatez, embellissez, validez et réparez vos flux JSON en ligne instantanément. Corrigez les erreurs de syntaxe, clés sans guillemets, minifiez et inspectez l'AST sans aucun transfert serveur.

Ouvrir l'outil→
Encodeur & Décodeur Base64 (URL-Safe)Développement

Encodez et décodez instantanément du texte ou des fichiers en Base64. Compatible base64url, UTF-8, retours MIME, Data URLs et correction d'erreurs en direct.

Ouvrir l'outil→