Menu

Convertitore cURL

Converti qualsiasi comando curl in fetch, axios, Python requests, Go, PHP e altro.

Di Nethanel Bar, Co-founder & CEO

Ultimo aggiornamento

Vuoi imparare a programmare sul serio?

Coddy ti insegna facendoti scrivere codice vero nel browser: lezioni interattive, feedback immediato e aiuto dall'AI quando ti blocchi.

Cos'è un convertitore cURL?

Un convertitore cURL trasforma un comando curl (il formato che usano tutte le documentazioni delle API, gli export di Postman e gli assistenti AI) in codice pronto da incollare nel linguaggio che usi davvero. Header, query string, body JSON, upload multipart, basic auth e cookie vengono tutti riportati, così non devi tradurre la richiesta a mano.

curl è il modo universale per descrivere una richiesta HTTP, ma in produzione raramente *esegui* curl. Esegui fetch in JavaScript, requests in Python, net/http in Go o qualunque cosa usi il tuo stack. Questo strumento colma la distanza: incolla il curl, clicca una scheda, copia il codice.

Tutto gira in locale nel browser. Il tuo comando curl, gli header e i token non lasciano mai il tuo computer: utile quando incolli comandi che contengono veri bearer token o cookie di sessione.

Cosa imparerai mentre converti

  • I flag di curl corrispondono a concetti precisi in ogni client HTTP: -H è un header della richiesta, -d è un body, -X è il metodo, -u è la basic auth, -F è un campo di un form multipart.
  • Se curl trova un body (-d, --data, -F) e nessun -X, usa POST come predefinito: lo stesso default della maggior parte dei client, quindi un -X non specificato diventa comunque POST nell'output.
  • I body JSON sono diversi dai body di un form. Content-Type: application/json significa che il body viene inviato così com'è; application/x-www-form-urlencoded significa che le coppie chiave/valore sono unite con &.
  • -G sposta il body nella query string per le richieste GET. L'output lo riflette: vedrai params / query compilati e nessun body inviato.

Come convertire curl in codice, passo dopo passo

  1. Incolla il tuo comando curl

    Inserisci il comando completo nel riquadro di input, comprese le continuazioni di riga \ copiate dalla documentazione. Il parser normalizza automaticamente le virgolette tipografiche e i prompt di PowerShell.

  2. Scegli il linguaggio di destinazione

    Le schede coprono JavaScript fetch, TypeScript, Node axios, Python requests, Python httpx, Go, PHP, Ruby, Java HttpClient, C# HttpClient, HTTPie e PowerShell. Cambiare scheda non costa nulla: l'analisi viene eseguita una sola volta.

  3. Controlla la richiesta analizzata

    Apri il pannello *Richiesta analizzata* per verificare che metodo, URL, header, tipo di body e opzioni come insecure o follow redirects siano stati riportati come ti aspettavi.

  4. Copia e sistema l'autenticazione

    Copia il codice generato nel tuo progetto. Se il curl conteneva un bearer token o un cookie, sostituisci il valore letterale con una variabile d'ambiente prima di fare commit.

Riferimento rapido dei flag cURL

I flag che questo convertitore riconosce e a cosa corrispondono nel codice generato.

FlagSignificatoEsempio
-X, --requestMetodo HTTP-X POST
-H, --headerHeader della richiesta (ripetibile)-H 'Accept: application/json'
-d, --dataBody della richiesta, codificato URL per impostazione predefinita-d 'name=Ada&age=30'
--data-rawBody senza espansione di @file--data-raw '$body'
--data-urlencodeCodifica percentuale di una parte del body--data-urlencode 'q=hello world'
-F, --formCampo di un form multipart (usa @file per i file)-F 'avatar=@photo.jpg'
-u, --userBasic auth → Authorization: Basic …-u alice:s3cret
-G, --getSposta il body nella query string, invia GET-G -d 'q=ada'
-b, --cookieHeader Cookie-b 'session=abc'
-A, --user-agentHeader User-Agent-A 'MyApp/1.0'
-L, --locationSegue i redirect 3xx-L
-k, --insecureSalta la verifica TLS (solo in sviluppo!)-k
--compressedAccetta risposte gzip/deflate/br--compressed
--max-timeTimeout dell'intera richiesta in secondi--max-time 30

Esempi di conversione cURL

GET con query string e header di autenticazione

curl
curl 'https://api.example.com/v1/lessons?limit=20&track=python' \  -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.demo'
JavaScript (fetch)
const response = await fetch('https://api.example.com/v1/lessons?limit=20&track=python', {  method: 'GET',  headers: {    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiJ9.demo'  }});const data = await response.json();

I parametri di query nell'URL restano nell'URL: per fetch il convertitore non li separa in un oggetto params a parte. Per axios e requests li vedrai spostati in params / params= per maggiore leggibilità.

POST con un body JSON

curl
curl 'https://api.example.com/v1/users' \  -H 'Content-Type: application/json' \  --data-raw '{"name":"Ada","age":36}'
Python (requests)
import requests
headers = {    'Content-Type': 'application/json',}json_data = {"name":"Ada","age":36}
response = requests.post('https://api.example.com/v1/users', headers=headers, json=json_data)response.raise_for_status()

Quando il body è JSON valido e Content-Type è application/json, il convertitore genera json= per requests e data: (oggetto analizzato) per axios. Se JSON.parse fallisce, la stringa letterale originale viene conservata, mai riscritta.

Upload di file multipart

curl
curl 'https://api.example.com/upload' \  -F 'caption=Hello' \  -F 'photo=@./avatar.jpg'
Python (requests)
import requests
files = {    'caption': (None, 'Hello'),    'photo': open('./avatar.jpg', 'rb'),}
response = requests.post('https://api.example.com/upload', files=files)response.raise_for_status()

-F field=@file diventa un vero upload di file (open('…', 'rb') in Python, FormData.append in JavaScript). I campi -F semplici diventano normali valori del form. L'anteprima nel browser mostra un segnaposto TODO per i blob di file che dovrai fornire in esecuzione.

Basic auth + cookie

curl
curl 'https://api.example.com/me' \  -u alice:s3cret \  -b 'session=2f9a; theme=dark'
JavaScript (fetch)
const response = await fetch('https://api.example.com/me', {  method: 'GET',  headers: {    'Authorization': 'Basic YWxpY2U6czNjcmV0',    'Cookie': 'session=2f9a; theme=dark'  }});

La basic auth viene condensata in un unico header Authorization. I cookie vengono uniti con ; e inviati come un solo header Cookie, esattamente come fa curl in rete.

Errori comuni nella conversione di curl

  • Incollare curl con virgolette tipografiche (', ', ", ") prese da un blog: sembrano virgolette ma rompono l'analisi della shell. Il convertitore le normalizza, ma quando puoi copia il comando originale.
  • Lasciare -k (--insecure) in produzione. Disattiva la verifica dei certificati TLS: va bene in sviluppo locale, è pericoloso con traffico reale.
  • Dimenticare che --data-raw e --data si comportano in modo diverso: --data codifica l'input come URL. Usa --data-raw per body JSON che contengono @ o &.
  • Incollare un comando curl.exe di Windows senza trasformare le continuazioni di riga ^ in \. Il convertitore lo gestisce, ma il parser è rigido sulle virgolette: ricontrolla dove iniziano e finiscono le stringhe.
  • Mettere bearer token o cookie sotto controllo di versione dopo la conversione. Spostali in variabili d'ambiente (process.env.API_TOKEN, os.environ['API_TOKEN']) prima del commit.

Domande frequenti sul cURL Converter

Quali linguaggi supporta il convertitore?
Dodici destinazioni già pronte: JavaScript (fetch), TypeScript (fetch), Node (axios), Python (requests), Python (httpx), Go (net/http), PHP (curl), Ruby (Net::HTTP), Java (HttpClient), C# (HttpClient), HTTPie e PowerShell (Invoke-RestMethod). Ognuna viene generata dalla stessa rappresentazione analizzata, quindi cambiare scheda è istantaneo.
Gestisce gli upload multipart e i flag -F?
Sì. -F field=value diventa un normale campo del form, -F file=@path diventa un vero upload di file con FormData (JS), files= (Python), CURLFile (PHP) e così via. I percorsi dei file compaiono come segnaposto TODO da collegare a un File, un Buffer o uno stream in esecuzione.
Il mio comando curl viene inviato a un server?
No. Il parser e tutti i generatori di codice girano nel browser. Bearer token, cookie e body delle richieste non lasciano mai il tuo computer, e per impostazione predefinita li mascheriamo anche nell'anteprima *Richiesta analizzata*.
Perché il mio curl di Windows ha un aspetto diverso?
curl.exe su Windows (e CMD/PowerShell) usa ^ o il backtick ` come continuazione di riga e può mettere le stringhe tra virgolette in modo diverso. Il convertitore normalizza gli schemi più comuni di Windows, ma se un comando incollato sembra sbagliato, prova a copiarlo su una sola riga.
Supporta le richieste GraphQL?
Sì: una richiesta GraphQL è semplicemente un POST con un body JSON che contiene query e variables. Incolla il curl e il convertitore genera un normale POST JSON nel linguaggio scelto. Gestisci la forma della risposta ({ data, errors }) come faresti con qualsiasi client GraphQL.
Posso incollare un curl esportato da Postman?
Sì. L'export *Code → cURL* di Postman è pienamente supportato, compresa la formattazione su più righe con \. Lo stesso vale per il curl generato da *Copy as cURL* nei DevTools di Chrome e Firefox.
fetch o axios: quale output scegliere?
Usa fetch se il tuo progetto lo ha già (è incluso nei browser e nelle versioni moderne di Node). Usa axios se ti servono parsing JSON automatico, interceptor delle richieste, nuovi tentativi o eventi di avanzamento: funzioni che fetch non offre di serie.

Scopri di più

Altri strumenti per sviluppatori

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA