web-dev-qa-db-fra.com

curl -GET et -X GET

Curl propose une série d'appels de méthodes http différentes précédés d'un X, mais propose également les mêmes méthodes sans. J'ai essayé les deux et je n'arrive pas à comprendre la différence. Quelqu'un peut-il m'expliquer rapidement en quoi ces deux opérations diffèrent?

109
matsko

Par défaut, vous utilisez curl sans indiquer explicitement la méthode de requête à utiliser. Si vous ne transmettez qu'une URL HTTP telle que _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, les choix par défaut de curl ne vous conviennent pas, vous pouvez remplacer ces méthodes de demande 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]_ car GET serait utilisé de toute façon. Dans le même esprit, il est inutile de 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]_.

Creuser plus profond

_curl -GET_ (avec un seul tiret) est tout simplement faux pour cette raison. Cela équivaut à spécifier les options -G , -E et -T et fera quelque chose. 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. Il s'agit de la forme longue de -G, 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 le curl FAQ pour couvrir cela .)

Avertissements

Les versions modernes de curl informent les utilisateurs de cette utilisation inutile et potentiellement dangereuse de -X lorsque le mode commenté est activé (_-v_) - pour sensibiliser les utilisateurs. En outre expliqué et motivé dans cet article de blog .

-G convertit un corps POST + en requête GET +

Vous pouvez demander à curl de convertir un ensemble d'options _-d_ et au lieu de les envoyer dans le corps de la requête avec POST, mettez-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/
_
234
Daniel Stenberg

-X [votre méthode]
X vous permet de remplacer le "Get" par défaut

** corrigé en minuscule x à majuscule X

3
hoogw