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'
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.
| Opzione | Significato | Nel builder |
|---|---|---|
| -X, --request | Metodo HTTP | Menu del metodo |
| -H, --header | Aggiunge un header alla richiesta | Riga di header |
| -d, --data, --data-raw, --data-binary | Body della richiesta; implica POST | Body, le ripetizioni unite con & |
| --data-urlencode | Campo del body codificato per URL | Body |
| --json | Body JSON più gli header Content-Type e Accept | Body e due righe di header |
| -F, --form | Campo multipart/form-data | Campo urlencoded nel body (file non supportati) |
| -u, --user | Autenticazione Basic | Autenticazione: Basic |
| -A, --user-agent | Header User-Agent | Riga di header (i browser non lo inviano) |
| -e, --referer | Header Referer | Riga di header (i browser non lo inviano) |
| -b, --cookie | Header Cookie | Riga di header (i browser non lo inviano) |
| -G, --get | Invia i dati come query string | Aggiunti all'URL |
| -I, --head | Richiesta HEAD | Metodo: HEAD |
| -L, -k, -s, -v, --compressed | Segue i redirect, salta il controllo TLS, silenzioso, verboso, accetta gzip | Ignorate |
Significato delle opzioni dal manuale di curl (curl.se/docs/manpage.html). --json richiede curl 7.82.0 o successivo.