Réponses:
Par défaut, vous utilisez curl sans indiquer explicitement la méthode de requête à utiliser. Si vous passez simplement une URL HTTP comme curl http://example.com
elle utilisera GET. Si vous utilisez -d
ou -F
curl utilisera POST, -I
provoquera un HEAD et -T
en fera un PUT.
Si, pour une raison quelconque, vous n'êtes pas satisfait de ces choix par défaut que curl fait pour vous, vous pouvez remplacer ces méthodes de requête en spécifiant -X [WHATEVER]
. De cette façon, vous pouvez par exemple envoyer un DELETE en faisant curl -X DELETE [URL]
.
Il est donc inutile de faire curl -X GET [URL]
comme GET serait de toute façon utilisé. Dans la même veine, il est inutile de le faire curl -X POST -d data [URL]...
Mais vous pouvez faire une requête amusante et quelque peu rare qui envoie un corps de requête dans une requête GET avec quelque chose comme curl -X GET -d data [URL]
.
curl -GET
(en utilisant un seul tiret) est tout simplement faux à cette fin. C'est l'équivalent de spécifier les options -G
, -E
et -T
et cela fera quelque chose de complètement différent.
Il existe également une option curl appelée --get
pour ne pas confondre les choses avec l'un ou l'autre. C'est la forme longue de -G, qui est utilisée pour convertir les données spécifiées avec -d
en une requête GET au lieu d'un POST.
(J'ai ensuite utilisé ma propre réponse ici pour remplir la FAQ curl pour couvrir cela .)
Les versions modernes de curl informeront les utilisateurs de cette utilisation inutile et potentiellement nuisible de -X lorsque le mode verbeux est activé ( -v
) - pour informer les utilisateurs. Plus expliqué et motivé dans ce billet de blog .
Vous pouvez demander à curl de convertir un ensemble d' -d
options et au lieu de les envoyer dans le corps de la requête avec POST, placez-les à la fin de la chaîne de requête de l'URL et émettez un GET, avec l'utilisation de `-G. Comme ça:
curl -d name=daniel -d grumpy=yes -G https://example.com/
L'utilisation de -X [WHATEVER]
modifie simplement la chaîne de méthode de la requête utilisée dans la requête HTTP. Ceci est plus facile à comprendre avec deux exemples - un avec -X [WHATEVER]
et un sans - et les en-têtes de requête HTTP associés pour chacun:
# 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: */*