回答:
デフォルトでは、使用するリクエストメソッドを明示的に指定せずにcurlを使用します。このようなHTTP URLを渡すだけの場合は、curl http://example.comGETを使用します。を使用する-dか、-FcurlがPOSTを使用-Iすると、HEADが発生-Tし、PUTになります。
何らかの理由で、curlが行うこれらのデフォルトの選択に満足できない場合は、を指定することにより、これらのリクエストメソッドをオーバーライドできます-X [WHATEVER]。この方法で、たとえばを実行してDELETEを送信できます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問題をどちらとも混同しないようにするために呼び出されるcurlオプションもあります。これは-Gの長い形式であり、指定さ-dれたデータをPOSTではなくGET要求に変換するために使用されます。
(その後、私は自分の回答をここで使用して、これをカバーするためにcurl FAQを入力しました。)
curlの最新バージョンは、冗長モードが有効になっている場合(-v-)に-Xを使用することでユーザーにこのことを知らせ、ユーザーに注意を喚起します。このブログ投稿でさらに説明され、動機付けられました。
一連の-dオプションを変換するようにcurlに要求し、POSTを使用してそれらをリクエスト本文で送信する代わりに、それらをURLのクエリ文字列の最後に配置し、 `-Gを使用してGETを発行できます。このような:
curl -d name=daniel -d grumpy=yes -G https://example.com/
の使用は、HTTPリクエストで使用される-X [WHATEVER]リクエストのメソッド文字列を変更するだけです。これは、2つの例(1つあり-X [WHATEVER]、1つあり、なし)と、それぞれに関連付けられたHTTP要求ヘッダーを使用すると、より簡単に理解できます。
# 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: */*