Generatore di comandi curl
Indicando in un modulo il metodo HTTP, l'indirizzo, le intestazioni, il corpo e il tipo di autenticazione, genera un comando curl pronto da copiare ed eseguire. La richiesta non viene realmente inviata, perciò non incontra le restrizioni della condivisione fra origini diverse.
Le opzioni di curl usate più di frequente
| Opzione | Descrizione |
|---|---|
| -X, --request <metodo> | Indica il metodo HTTP: GET, POST, PUT, PATCH, DELETE e simili. Se omessa, il metodo è GET in assenza di corpo e POST in sua presenza. |
| -H, --header <intestazione> | Aggiunge un'intestazione alla richiesta. Per indicarne più di una si ripete l'opzione -H. |
| -d, --data <dati> | Invia il corpo della richiesta. Se non si indica -X, l'invio avviene automaticamente come POST con tipo di contenuto application/x-www-form-urlencoded. |
| -u, --user <utente:parola> | Indica nome utente e parola d'ordine per l'autenticazione di base, nella forma «utente:parola». |
| -k, --insecure | Salta la verifica del certificato SSL. Pensata per gli ambienti di sviluppo con certificati autofirmati; sconsigliata in produzione. |
| -L, --location | Se il servente risponde con un reindirizzamento della serie 3xx, segue automaticamente la destinazione indicata nell'intestazione Location. |
| -v, --verbose | Mostra sull'uscita d'errore standard lo scambio dettagliato, comprese le intestazioni di richiesta e risposta. Utile per la messa a punto. |
| --compressed | Aggiunge l'intestazione Accept-Encoding, richiede risposte compresse, per esempio in gzip, e le decomprime automaticamente. |
| -o, --output <file> | Salva il corpo della risposta nel file indicato anziché sull'uscita standard. |
| -F, --form <nome=contenuto> | Invia dati di modulo e file nel formato multipart/form-data. Per caricare un file si indica «@percorso-del-file». |
Consigli
- Il comando generato si può incollare ed eseguire direttamente in un terminale, in uno script di shell o in un file di configurazione dell'integrazione continua. Tutti i valori sono già protetti con apici semplici.
- Se lasciate il metodo su GET e inserite un corpo compare un avviso. curl, infatti, quando si usa
-dsenza-X, invia automaticamente come POST: la segnalazione serve a evitare comportamenti indesiderati. - Spuntando l'aggiunta automatica dell'intestazione Content-Type: application/json, quella intestazione — che nelle richieste alle interfacce JSON si dimentica facilmente — viene inserita da sé.
- I valori dell'autenticazione di base e del gettone al portatore vengono elaborati soltanto nel navigatore e non sono mai trasmessi ad alcun servente.
- L'opzione
-k, che salta la verifica del certificato, è un espediente temporaneo riservato agli ambienti di sviluppo locali con certificati autofirmati. Evitatene l'uso stabile verso le interfacce di produzione.
Domande frequenti
-d, cioè il corpo, senza l'opzione -X, curl invia automaticamente come POST. Nei casi particolari in cui volete mantenere GET e inviare comunque un corpo, aggiungete a mano -X GET al comando generato.
A proposito — perché curl è lo strumento «che tutti usano e nessuno conosce»
curl è uno strumento a riga di comando per trasferire dati tramite indirizzi web, sviluppato nel 1996 dall'ingegnere svedese Daniel Stenberg. All'origine c'era un piccolo programma che recuperava i cambi valutari per un automa di conversazione su IRC; da lì è cresciuto fino a diventare un progetto imponente, capace di gestire oltre venticinque protocolli fra cui HTTP, FTP e SMTP.
curl è considerato uno dei programmi più diffusi al mondo. È incorporato in ogni sorta di apparecchio collegato a Internet — telefoni, automobili, elettrodomestici, console per videogiochi e persino sonde spaziali, con un impiego documentato nelle missioni marziane della NASA — e le stime parlano di decine di miliardi di dispositivi. Nonostante tanta diffusione, fuori dalla cerchia degli sviluppatori il suo nome è quasi ignoto: è l'esempio per eccellenza dell'infrastruttura che lavora nell'ombra.
Nel 2019 Stenberg è stato premiato dalla Linux Foundation per il suo contributo alle tecnologie fondanti del web. Ancora oggi guida lo sviluppo di curl come principale responsabile della manutenzione ed è noto per aver condotto il progetto con grande cautela, senza mai rompere la compatibilità all'indietro in oltre vent'anni.
Anche oggi che Postman e le sue interfacce grafiche si sono affermate, i comandi curl continuano a comparire nei file di presentazione dei progetti, nella documentazione ufficiale e nelle procedure di verifica delle interfacce di programmazione. La ragione è semplice: curl non richiede installazione, è presente di serie in quasi tutti gli ambienti Linux e macOS e permette di eseguire e condividere un risultato con un solo comando, garantendo così un'elevata riproducibilità.