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 -d senza -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

No. Lo strumento si limita a comporre la stringa del comando e non invia alcuna richiesta HTTP. L'esecuzione avviene soltanto quando copiate il comando nel vostro terminale. Se volete inviare davvero la richiesta e vederne l'esito, usate lo strumento affine dedicato alla prova delle interfacce REST.

Sì. Inserendo qui il metodo, l'indirizzo, le intestazioni e il corpo della richiesta composta in Postman otterrete un comando curl pronto da copiare e incollare. È comodo per trasferirlo negli script dell'integrazione continua o nella documentazione.

Tecnicamente sì, ma occorre attenzione: se si indica -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.

No. Tutte le credenziali inserite sono elaborate dal JavaScript nel vostro navigatore e non giungono mai ai serventi di toolbase.cc. Quando eseguirete il comando generato, sarà il vostro ambiente a inviarle direttamente all'interfaccia.

L'opzione «-k», ovvero «--insecure», salta la verifica del certificato SSL e va usata soltanto come espediente temporaneo negli ambienti di sviluppo locali con certificati autofirmati. In produzione o nelle comunicazioni che trattano dati riservati espone al rischio di attacchi con interposizione, perciò è sconsigliata.
Tool-kun

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à.