Come effettuare una richiesta POST con curl

8 gen 2024 3 min di lettura
Come effettuare una richiesta POST con curl
Indice dei contenuti

Introduzione

curlè un'utilità della riga di comando per trasferire dati da o verso un server remoto utilizzando uno dei protocolli supportati. È installato per impostazione predefinita su Windows, macOS e sulla maggior parte delle distribuzioni Linux.

Gli amministratori di sistema, gli sviluppatori e altri utenti utilizzano curlper testare le API , visualizzare le intestazioni di risposta ed effettuare richieste HTTP.

Questo articolo spiega come utilizzare curl per effettuare richieste POST.

Opzioni arricciatura

Il metodo HTTP POST viene utilizzato per inviare dati al server remoto.

La forma generale del comando curl  per effettuare una richiesta POST è la seguente:

curl -X POST [options] [URL]

L'opzione -X specifica quale metodo di richiesta HTTP verrà utilizzato durante la comunicazione con il server remoto. Nella maggior parte dei casi, non è necessario impostare il metodo perché viene determinato dalle opzioni della riga di comando.

Effettuare una richiesta POST

Una tipica richiesta POST viene inviata tramite un modulo HTML e i dati inviati al modulo vengono solitamente codificati nel application/x-www-form-urlencodedtipo di formato. Le chiavi e i valori dei dati sono codificati in coppie chiave-valore, separate dal &simbolo e separate =tra la chiave e il valore.

Per inviare una richiesta POST con curl, utilizzare l' opzione -d(--data) per specificare i dati:

curl -d 'name=noviello&[email protected]' https://example.com/form/

Nell'esempio sopra, stiamo inviando dati al server remoto costituiti da due coppie chiave-valore: “name=noviello” e “ [email protected] ”.

Puoi anche inviare i dati utilizzando più opzioni -d. Ad esempio, il comando sopra può anche essere scritto in questo modo:

curl -d 'name=noviello' -d '[email protected]' https://example.com/form/

Quando invii dati a curl utilizzando l'opzione -d, devi sempre codificare correttamente nell'URL tutti i caratteri non alfanumerici sia nelle chiavi che nei valori. Ad esempio, se stai inviando dati che contengono un nome con spazi ("John Doe"), il comando sarà simile a questo:

curl -d 'name=John%20Doe'  https://example.com/form/

Tuttavia, è un po' scomodo codificare manualmente i dati che non sono già codificati. In questo caso è meglio utilizzare l'opzione --data-urlencode che dice curldi codificare i dati forniti. Il comando sopra, se utilizzato con l'opzione --data-urlencode, sarà simile a questo:

curl --data-urlencode 'name=John Doe'  https://example.com/form/

I dati passati al comando curl sono solitamente nel formato key=value. Quando si utilizza l'opzione --data-urlencode, viene codificata solo la parte del valore. curlaspettarsi che la chiave sia già codificata nell'URL.

Se stai inviando dati che contengono un vasto numero di coppie chiave-valore, invece di digitare i dati sulla riga di comando puoi memorizzarli in un file e passare quel file a curl:

curl -d @name_of_the_file https://example.com/form/

Quando i dati forniti al comando iniziano con il simbolo @curlconsidera i dati come un file nel sistema locale e leggerà e utilizzerà i dati da quel file.

Effettuare una richiesta POST utilizzando i dati del modulo multiparte

Il tipo di contenuto multipart/form-dataviene utilizzato quando i dati del modulo contengono file binari o altri dati di payload di grandi dimensioni.

Per creare una richiesta POST in più parti, richiamare il comando curl con una o più opzioni -F--form), seguite dalle coppie key=value. Quando viene utilizzata l'opzione -Fcurlinvia i dati utilizzando il tipo di contenuto multipart/form-data.

L'esempio seguente mostra come effettuare una richiesta POST a un modulo che ha i campi "nome" e "immagine":

curl -F 'name=noviello' -F '[email protected]' https://example.com/form/

Caricamento file

Per POSTARE un file con curl, aggiungere il @simbolo prima del percorso del file. Il file può essere un archivio, un'immagine, un documento, ecc.

curl -F 'image=@/home/user/Pictures/wallpaper.jpg' http://example.com/upload/

POST dati JSON con cURL

JSON è un formato dati basato su testo utilizzato per i trasferimenti di dati tra servizi Web e API.

Puoi inviare dati JSON utilizzando POST utilizzando curll'opzione --json.

Ecco un esempio base di invio di un oggetto JSON a un server:

curl --json '{"website": "noviello.it"}' http://example.com/api/

curlinvia i dati JSON così come sono, quindi assicurati che siano in un formato JSON valido.

Come con le normali richieste POST, puoi utilizzare più opzioni --json in un unico comando:

curl --json '{"name": "Jonn"}' --json '{"age": "36"}'  http://example.com/api/

I dati JSON possono anche essere letti da un file locale:

curl --json @json_data.txt  http://example.com/api/

Se stai utilizzando curluno script, puoi reindirizzare i dati JSON da un altro comando a curl, come mostrato di seguito:

echo '{"website": "noviello.it"}' | curl --json @- http://example.com/api/

La parte @- significa leggere il corpo dallo standard input.

Conclusione

Ti abbiamo mostrato come utilizzarlo curlper effettuare richieste POST. Per ulteriori informazioni su curl, visitare la pagina della documentazione di Curl .

Se hai domande o feedback, sentiti libero di lasciare un commento.

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.