Risposte:
Per impostazione predefinita, usi curl senza dire esplicitamente quale metodo di richiesta usare. Se si passa solo un URL HTTP come curl http://example.com
questo, verrà utilizzato GET. Se usi -d
o -F
curl userai POST, -I
causerà un HEAD e -T
lo renderà un PUT.
Se per qualsiasi motivo non sei soddisfatto di queste scelte predefinite che curl fa per te, puoi sovrascrivere quei metodi di richiesta specificando -X [WHATEVER]
. In questo modo puoi ad esempio inviare un DELETE facendo curl -X DELETE [URL]
.
Non ha quindi senso fare curl -X GET [URL]
come sarebbe comunque utilizzato GET. Allo stesso modo è inutile, curl -X POST -d data [URL]...
ma puoi fare una richiesta divertente e un po 'rara che invia un corpo della richiesta in una richiesta GET con qualcosa di simile curl -X GET -d data [URL]
.
curl -GET
(usando un solo trattino) è semplicemente sbagliato per questo scopo. È l'equivalente di specificare le opzioni -G
, -E
e -T
e questo farà qualcosa di completamente diverso.
C'è anche un'opzione curl chiamata --get
per non confondere le cose con nessuno dei due. È la forma lunga di -G, che viene utilizzata per convertire i dati specificati con -d
in una richiesta GET invece che in un POST.
(Successivamente ho usato la mia risposta qui per popolare le FAQ di curl per coprire questo .)
Le versioni moderne di curl informeranno gli utenti su questo uso non necessario e potenzialmente dannoso di -X quando la modalità dettagliata è abilitata ( -v
) - per rendere gli utenti consapevoli. Spiegato ulteriormente e motivato in questo post del blog .
Puoi chiedere a curl di convertire un insieme di -d
opzioni e invece di inviarle nel corpo della richiesta con POST, metterle alla fine della stringa di query dell'URL ed emettere un GET, con l'uso di `-G. Come questo:
curl -d name=daniel -d grumpy=yes -G https://example.com/
L'uso di -X [WHATEVER]
cambia semplicemente la stringa del metodo della richiesta utilizzata nella richiesta HTTP. Questo è più facile da capire con due esempi, uno con -X [WHATEVER]
e uno senza, e le intestazioni delle richieste HTTP associate per ciascuno:
# curl -XPANTS -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.224.86.126) port 80 (#0)
> PANTS / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*
# curl -o nul -v http://neverssl.com/
* Connected to neverssl.com (13.33.50.167) port 80 (#0)
> GET / HTTP/1.1
> Host: neverssl.com
> User-Agent: curl/7.42.0
> Accept: */*