回答:
デフォルトでは、使用するリクエストメソッドを明示的に指定せずにcurlを使用します。このようなHTTP URLを渡すだけの場合は、curl http://example.com
GETを使用します。を使用する-d
か、-F
curlが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: */*