159

Curlは、接頭辞Xが付いた一連の異なるhttpメソッド呼び出しを提供しますが、接頭辞Xがない同じメソッドも提供します。私は両方を試しましたが、違いがわからないようです。これらの2つの操作の違いを誰かがすぐに説明できますか?

4

3 に答える 3

313

デフォルトでは、使用するリクエストメソッドを明示的に指定せずにcurlを使用します。curl http://example.comGETを使用するようにHTTPURLを渡すだけの場合。使用する-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どちらとも問題を混同しないように呼び出されるカールオプションもあります。これは-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/
于 2011-12-14T09:20:44.463 に答える
3

-X[メソッド]
Xを使用すると、デフォルトの「Get」をオーバーライドできます

**小文字xを大文字に修正X

于 2017-01-31T17:42:23.220 に答える
2

を使用すると、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: */*
于 2019-10-12T20:36:07.217 に答える