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 curl
per 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-urlencoded
tipo 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 curl
di 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. curl
aspettarsi 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 @
, curl
considera 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-data
viene 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 -F
, curl
invia 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 curl
l'opzione --json
.
Ecco un esempio base di invio di un oggetto JSON a un server:
curl --json '{"website": "noviello.it"}' http://example.com/api/
curl
invia 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 curl
uno 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 curl
per 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.