internettoolbox
← Torna agli strumenti

Convertitore cURL e builder di richieste HTTP

Parte dal tuo browser: l'API deve consentire CORS, e i browser scartano header come Cookie e User-Agent.

Parametri query

Header

Autenticazione

curl 'https://jsonplaceholder.typicode.com/posts/1'
Cronologia

Qui compaiono le richieste che invii o salvi. Restano in questo browser.

Come funziona

Incolla un comando cURL nel campo in alto e premi Importa. La fonte più comoda è il browser: apri gli strumenti per sviluppatori, vai nella scheda Rete, clicca col tasto destro su una richiesta e scegli Copia, poi Copia come cURL. Funzionano sia la variante bash sia quella cmd, e anche i comandi scritti a mano: apici singoli, doppi, stringhe $'...' e righe spezzate con la barra rovesciata, il simbolo ^ o l'accento grave. Il comando viene scomposto in metodo, URL, header e body, e ogni campo diventa modificabile.

Cosa legge l'importatore. `-X` o `--request` impostano il metodo. `-H` aggiunge un header. `-d`, `--data`, `--data-raw`, `--data-binary` e `--data-urlencode` impostano il body; se sono più di uno vengono uniti con `&`, come fa curl. Un body senza `-X` trasforma la richiesta in POST, e un body senza Content-Type riceve application/x-www-form-urlencoded, sempre come fa curl. `--json` imposta un body JSON con i suoi due header. `-u utente:password` diventa un header Authorization Basic, `-A` uno User-Agent, `-e` un Referer, `-b` un Cookie. `-G` sposta i dati nella query string, `-I` manda una HEAD. I campi `-F` diventano campi urlencoded, perché una pagina web non può riprodurre l'upload di un file dal tuo disco. Le opzioni che non cambiano la richiesta, come `-L`, `-k`, `-s`, `-v` e `--compressed`, vengono scartate.

Costruire una richiesta da zero. Scegli il metodo (GET, POST, PUT, PATCH, DELETE, HEAD o OPTIONS), scrivi l'URL (la tabella Parametri query mostra i suoi parametri decodificati, uno per riga: modifichi un valore, aggiungi o togli una riga e l'URL viene riscritto con la codifica giusta, per cui `a&b` diventa `a%26b`), aggiungi le righe degli header con + Aggiungi header e scrivi il body. Il menu Autenticazione aggiunge l'header Authorization al posto tuo: Token Bearer, oppure Basic da utente e password (codificati in Base64 come utente:password). Un header Authorization importato finisce in quel menu, così il token si modifica in un posto solo. Formatta JSON indenta il body con due spazi e ti avvisa con JSON non valido quando non si riesce a leggerlo.

Codice in cinque linguaggi. Il pannello del codice riscrive la richiesta come cURL, fetch JavaScript, axios, Python requests o HTTPie, e si aggiorna mentre scrivi. Quando il Content-Type è JSON, fetch riceve un body `JSON.stringify({...})`, axios un oggetto normale e Python un payload `json=` con true, false e null trasformati in True, False e None. L'output cURL mette ogni valore tra apici per una shell POSIX, quindi un URL o un body con un apostrofo (“l'utente”) torna indietro intatto. Copia mette negli appunti la scheda che stai guardando.

Inviare la richiesta. Invia esegue la richiesta con il fetch del browser e mostra il codice di stato, il tempo impiegato, gli Header della risposta e il body, formattato se è JSON. La richiesta va dal tuo browser direttamente all'API, senza passare da un nostro server. Questo ha due conseguenze. L'API deve consentire le richieste cross-origin (CORS): le API pubbliche di solito lo fanno, quelle interne e di amministrazione spesso no, e in quel caso la pagina ti dice che la richiesta è fallita e ti suggerisce di eseguire il cURL da terminale. E i browser non permettono a una pagina di impostare alcuni header, tra cui Cookie, User-Agent, Referer e Host: nella richiesta inviata vengono tolti senza avvisi, anche se compaiono nel codice generato.

Cronologia. Ogni richiesta che invii, e quelle che salvi con il pulsante Salva, finisce nella Cronologia, che tiene le ultime 30. Clicca su una voce per ricaricarla nel builder. L'elenco sta nel localStorage di questo browser e da nessun'altra parte, e questo vuol dire anche che una richiesta salvata conserva lì il suo header Authorization: su un computer condiviso usa Svuota cronologia.

Domande frequenti

Come convertire un comando curl in fetch o Python?

Incollalo nel campo Incolla un comando cURL, premi Importa e scegli la scheda fetch o Python nel pannello del codice. Il comando viene scomposto in metodo, URL, header e body, e ogni scheda riscrive la stessa richiesta: `fetch()` con un oggetto headers per JavaScript, `requests.request()` per Python, più axios e HTTPie. Copia prende il codice della scheda aperta.

È un'alternativa a Postman online?

Per le richieste singole sì: costruisci una GET o una POST con header, autenticazione e body JSON, la invii, leggi la risposta e tieni una cronologia. Non sostituisce Postman in tutto: niente collection, ambienti, variabili o script di test, e le richieste partono dal browser, quindi l'API deve consentire CORS. Con un'API che non lo consente, copia il cURL ed eseguilo da terminale.

Come testare un'API online senza installare niente?

Scegli il metodo, scrivi l'URL e premi Invia: sotto compaiono codice di stato, tempo di risposta in millisecondi, header della risposta e body. All'apertura il campo contiene già https://jsonplaceholder.typicode.com/posts/1, un'API di prova pubblica che risponde con un JSON, così vedi subito come funziona. Per una POST aggiungi il body e, se è JSON, l'header Content-Type: application/json.

Perché Invia fallisce con un errore CORS?

Perché l'API non accetta richieste da altri siti. Una pagina web può leggere la risposta di un'altra origine solo se il server risponde con un header Access-Control-Allow-Origin che lo permette. Postman e curl non sono pagine web, quindi ignorano CORS; questo strumento no. Copia il cURL ed eseguilo da terminale, oppure prova con un'API che invia quell'header.

Come faccio “Copia come cURL” da Chrome o Firefox?

Apri gli strumenti per sviluppatori (F12), vai nella scheda Rete, ricarica la pagina, clicca col tasto destro sulla richiesta che ti interessa e scegli Copia, poi Copia come cURL. Chrome su Windows offre sia Copia come cURL (cmd) sia Copia come cURL (bash), e qui si importano tutte e due. Firefox ha Copia come cURL nello stesso menu.

Perché gli header Cookie e User-Agent non vengono inviati?

Perché i browser vietano alle pagine web di impostarli. Cookie, User-Agent, Referer, Host, Origin e pochi altri sono nell'elenco degli header proibiti della specifica fetch, quindi il browser li toglie da una richiesta inviata dalla pagina. Restano però nel codice generato, ed è quello che ti serve quando lo esegui fuori dal browser.

Come inviare una richiesta POST con JSON usando curl?

Usa `curl -X POST https://api.example.com/items -H 'Content-Type: application/json' -d '{"nome":"Ada"}'`, oppure, da curl 7.82 in poi, la forma più corta `curl --json '{"nome":"Ada"}' https://api.example.com/items`. `-X POST` è facoltativo, perché `-d` implica già una POST. Se costruisci la richiesta qui, la scheda cURL scrive il comando con gli apici già sistemati.

Come aggiungo un token Bearer o l'autenticazione Basic?

Scegli Token Bearer o Basic nel menu Autenticazione. Bearer aggiunge `Authorization: Bearer <token>`; Basic chiede utente e password e aggiunge `Authorization: Basic` seguito dal Base64 di utente:password, lo stesso header che curl costruisce da `-u utente:password`. Base64 è una codifica, non una cifratura: tratta un header Basic come se fosse la password in chiaro.

Le mie richieste e i token vengono salvati da qualche parte?

Solo nel tuo browser. Importare, modificare e generare il codice non fa partire nessuna richiesta di rete; Invia ne fa esattamente una, verso l'URL che hai scritto. La Cronologia è salvata nel localStorage di questo browser, compresi gli header Authorization, e non viene mai caricata altrove. Quando hai finito su un computer condiviso, premi Svuota cronologia.

Le opzioni di curl che il convertitore legge

Cosa fa ogni opzione alla richiesta, e cosa ne fa l'importatore.

OpzioneSignificatoNel builder
-X, --requestMetodo HTTPMenu del metodo
-H, --headerAggiunge un header alla richiestaRiga di header
-d, --data, --data-raw, --data-binaryBody della richiesta; implica POSTBody, le ripetizioni unite con &
--data-urlencodeCampo del body codificato per URLBody
--jsonBody JSON più gli header Content-Type e AcceptBody e due righe di header
-F, --formCampo multipart/form-dataCampo urlencoded nel body (file non supportati)
-u, --userAutenticazione BasicAutenticazione: Basic
-A, --user-agentHeader User-AgentRiga di header (i browser non lo inviano)
-e, --refererHeader RefererRiga di header (i browser non lo inviano)
-b, --cookieHeader CookieRiga di header (i browser non lo inviano)
-G, --getInvia i dati come query stringAggiunti all'URL
-I, --headRichiesta HEADMetodo: HEAD
-L, -k, -s, -v, --compressedSegue i redirect, salta il controllo TLS, silenzioso, verboso, accetta gzipIgnorate

Significato delle opzioni dal manuale di curl (curl.se/docs/manpage.html). --json richiede curl 7.82.0 o successivo.

Cambia strumento

Cerca e apri qualsiasi strumento