curl -GET и -X GET - PullRequest
       22

curl -GET и -X GET

107 голосов
/ 14 декабря 2011

Curl предлагает серию различных вызовов методов http, которые начинаются с префикса X, но также предлагают те же методы без.Я пробовал оба, и я не могу понять разницу.Может кто-нибудь объяснить мне быстро, как эти две операции отличаются?

Ответы [ 3 ]

231 голосов
/ 14 декабря 2011

По умолчанию вы используете curl без явного указания, какой метод запроса использовать. Если вы просто передадите HTTP-URL вроде curl http://example.com, он будет использовать GET. Если вы используете -d или -F, curl будет использовать POST, -I вызовет HEAD, а -T сделает PUT.

Если по какой-либо причине вас не устраивают варианты по умолчанию, которые делает для вас curl, вы можете переопределить эти методы запроса, указав -X [WHATEVER]. Таким образом, вы можете, например, отправить УДАЛЕНИЕ, выполнив curl -X DELETE [URL].

Таким образом, бессмысленно делать curl -X GET [URL], поскольку GET будет использоваться в любом случае. В том же духе бессмысленно делать curl -X POST -d data [URL]... Но вы можете сделать забавный и несколько редкий запрос, который отправляет тело запроса в GET-запросе с чем-то вроде curl -X GET -d data [URL].

Копать глубже

curl -GET (используя одну черту) просто неправильно для этой цели. Это эквивалентно указанию опций -G, -E и -T, и это будет делать что-то совершенно другое.

Также есть опция скручивания под названием --get, чтобы не путать вопросы ни с одним из них. Это длинная форма -G, которая используется для преобразования данных, указанных с помощью -d, в запрос GET вместо POST.

(впоследствии я использовал свой собственный ответ здесь, чтобы заполнить curl FAQ, чтобы охватить это .)

Предупреждения

Современные версии curl будут информировать пользователей об этом ненужном и потенциально вредном использовании -X, когда включен подробный режим (-v) - чтобы пользователи знали об этом. Далее объяснено и мотивировано в этом сообщении в блоге .

-G преобразует тело POST + в запрос GET +

Вы можете попросить curl преобразовать набор параметров -d и вместо того, чтобы отправлять их в теле запроса с помощью POST, поместить их в конец строки запроса URL-адреса и выполнить GET с использованием `-G , Как это:

curl -d name=daniel -d grumpy=yes -G https://example.com/
2 голосов
/ 31 января 2017

-X [ваш метод]
X позволяет переопределить значение по умолчанию 'Get'

** с исправленным нижним регистром x на верхний регистр X

0 голосов
/ 14 декабря 2011

Возможно, я не слежу за вашим вопросом, но похоже, что есть опция -G, которая просто указывает curl использовать метод GET, а затем есть опция -X, которая позволяет вам делать методы как угодно. Так что curl -G и curl -XGET - это одно и то же. Я не вижу -GET кажется, что curl просто игнорирует что-либо после -G.

...