Curlは、Xをプレフィックスとする一連の異なるhttpメソッド呼び出しを提供しますが、同じメソッドもなしで提供します。私は両方を試しましたが、違いを理解できないようです。これらの2つの操作がどのように異なるかを誰かがすぐに説明できますか?
デフォルトでは、使用する要求メソッドを明示的に指定せずにcurlを使用します。 curl http://example.com
のようなHTTP URLを渡すだけで、GETが使用されます。 -d
を使用する場合、または-F
curlがPOSTを使用する場合、-I
はHEADを引き起こし、-T
はそれをPUTにします。
何らかの理由でcurlが行うこれらのデフォルトの選択に満足できない場合は、-X [WHATEVER]
を指定してこれらのリクエストメソッドをオーバーライドできます。この方法では、たとえばcurl -X DELETE [URL]
を実行してDELETEを送信できます。
したがって、GETがとにかく使用されるので、curl -X GET [URL]
を実行しても意味がありません。同じように、curl -X POST -d data [URL]...
を実行しても意味がありませんが、curl -X GET -d data [URL]
のようなGETリクエストでリクエストボディを送信する、やや珍しいリクエストを作成できます。
curl -GET
(単一のダッシュを使用)は、この目的にはまったく間違っています。これは -G
、 -E
および -T
オプションを指定することと同等であり、まったく異なることを行います。
--get
と呼ばれるcurlオプションもあり、問題をどちらとも混同しないようにします。これは、-Gの長い形式であり、 -d
で指定されたデータをPOSTではなくGETリクエストに変換するために使用されます。
(その後、ここで独自の回答を使用して、 curl FAQを埋めてこれをカバーします 。)
最新バージョンのcurlは、冗長モード(-v
)が有効になっているときに-Xの不要で潜在的に有害な使用についてユーザーに通知し、ユーザーに認識させます。 このブログ投稿 でさらに説明し、やる気を起こさせます。
Curlに-d
オプションのセットを変換するように依頼し、POSTを使用してリクエスト本文で送信する代わりに、URLのクエリ文字列の最後に追加し、 `-Gを使用してGETを発行します。このような:
curl -d name=daniel -d grumpy=yes -G https://example.com/
-X [あなたの方法]
Xを使用すると、デフォルトの「Get」をオーバーライドできます
**小文字のx
を大文字のX
に修正しました