1. ホーム
  2. curl

[解決済み] curl -GETと-X GET

2022-03-10 17:52:05

質問

Curlは、Xをプレフィックスとする一連の異なるhttpメソッドコールを提供しますが、Xをプレフィックスとしない同じメソッドも提供します。両方を試してみましたが、違いがよくわかりません。どなたか、この2つの操作の違いを手早く説明していただけませんか?

どのように解決するのですか?

デフォルトでは、どのリクエストメソッドを使用するかを明示せずに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 (ダッシュ1つで)は、この目的にはちょうど間違っています。これは -G , -E そして -T というオプションがあり、これによって全く別のことができるようになります。

というcurlオプションもあります。 --get と混同しないようにしましょう。これは-Gのロングフォームで、-Gで指定したデータを -d を POST ではなく GET リクエストに変換します。

(その後、私はここで自分の回答を使って、入力した curl FAQ でカバーしています。 .)

警告

最近のバージョンのcurlでは、冗長モードが有効な場合、この不必要で有害な可能性のある-Xの使用についてユーザーに通知されます ( -v ) - ユーザーの注意を喚起するためです。さらに説明と動機付けは このブログの記事 .

-G は POST + ボディを GET + クエリに変換します。

のセットを変換するようにcurlに依頼することができます。 -d オプションを指定し、それを POST でリクエストボディに送る代わりに、URL のクエリー文字列の最後に置いて、`-G' を使って GET を発行します。こんな感じ。

curl -d name=daniel -d grumpy=yes -G https://example.com/