TK TaskKit
Outils dev

cURL ↔ fetch

Convertis des commandes cURL en appels JavaScript fetch() et inversement, dans ton navigateur.

Entrée
Sortie
Colle une commande à gauche, vois la forme convertie à droite.

Les entrées restent sur cet appareil. Chaque outil dev de TaskKit tourne entièrement dans ton navigateur. Tokens, payloads et texte collé ne sont pas transmis aux serveurs de TaskKit ni à des tiers.

Ce que fait cet outil

Convertit des commandes cURL en appels JavaScript fetch() et inversement. Méthode, headers, body de requête, basic auth et cookies passent tous dans les deux directions. Utile quand tu as copié un curl depuis ton terminal ou un « Copy as cURL » de Chrome devtools et que tu le veux comme code, ou quand tu veux partager un snippet fetch avec quelqu'un dont tu ne verras jamais le navigateur.

Quand l'utiliser

  • Traduire un curl de la doc d'un fournisseur dans ton client TypeScript.
  • Reproduire une requête qui échoue depuis un rapport de bug (« voici le curl ») dans un script Node.
  • Partager une requête avec un coéquipier comme un snippet fetch qu'il peut coller directement dans une console navigateur.
  • Réécrire un fetch qui marche en curl pour ouvrir un bug avec le backend.

Comment ça marche

La direction curl parse l'entrée comme une commande shell — les strings entre guillemets sont respectées, les continuations de ligne (\) sont jointes et les flags courants (-X, -H, -d, -u, -A, -e, -b) sont reconnus. -u user:pass est réécrit en header Authorization: Basic pour que ça marche dans n'importe quel client HTTP.

La direction fetch lit un appel fetch() et en extrait l'URL, la méthode, les headers et le body. C'est un extracteur basé sur des regex, pas un parser JS, donc les littéraux de string marchent mais les template literals et les valeurs calculées non.

Notes

Mon fetch avec un template literal JSON ne s'est pas traduit. Correct — le parser ne lit que les strings littérales. Remplace \{ "id": \${id} }`` par la string résolue, ou fais cette conversion d'abord.

--data-binary est-il traité différemment de -d ? Non. cURL les distingue (l'un préserve les newlines, l'autre non), mais pour la traduction fetch on traite les deux comme le body de la requête. Si tu dépends de la sémantique binaire, tu es au-delà de ce que fetch peut exprimer de toute façon.

Et HTTP/2 push, l'upload multipart, le streaming ? Hors périmètre. Le multipart est la requête la plus courante — pour ça, construis FormData en code plutôt que de passer par cet outil.

Outils liés