Curlは、接頭辞Xが付いた一連の異なるhttpメソッド呼び出しを提供しますが、接頭辞Xがない同じメソッドも提供します。私は両方を試しましたが、違いがわからないようです。これらの2つの操作の違いを誰かがすぐに説明できますか?
3 に答える
デフォルトでは、使用するリクエストメソッドを明示的に指定せずにcurlを使用します。curl http://example.com
GETを使用するようにHTTPURLを渡すだけの場合。使用する-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
どちらとも問題を混同しないように呼び出されるカールオプションもあります。これは-Gの長い形式であり、で指定さ-d
れたデータをPOSTではなくGET要求に変換するために使用されます。
(その後、ここで自分の回答を使用して、これをカバーするためのカールFAQを入力しました。)
警告
最新バージョンのcurlは、冗長モードが有効になっている場合に、この不要で潜在的に有害な-Xの使用についてユーザーに通知し(-v
)-ユーザーに認識させます。このブログ投稿でさらに説明され、動機付けられています。
-GはPOST+本文をGET+クエリに変換します
curlに一連のオプションを変換するよう-d
に依頼し、POSTを使用してリクエスト本文で送信する代わりに、URLのクエリ文字列の最後に配置し、`-Gを使用してGETを発行できます。このような:
curl -d name=daniel -d grumpy=yes -G https://example.com/
-X[メソッド]
Xを使用すると、デフォルトの「Get」をオーバーライドできます
**小文字x
を大文字に修正X
を使用すると、HTTPリクエストで使用される-X [WHATEVER]
リクエストのメソッド文字列が変更されるだけです。-X [WHATEVER]
これは、2つの例(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: */*