curlでPUTリクエストを行う方法は?


412

curlを使用してRESTful PUT(またはDELETE)メソッドをテストするにはどうすればよいですか?

回答:


566

-X必要なHTTP動詞でフラグを使用する:

curl -X PUT -d arg=val -d arg2=val2 localhost:8080

この例では、-dフラグを使用してPUTリクエストに引数を提供しています。


17
-Xの "man curl": "通常、このオプションは必要ありません。すべての種類のGET、HEAD、POST、およびPUTリクエストは、専用のコマンドラインオプションを使用して呼び出されます。" しかし、私は他の方法を見つけることができませんでした。
マーティンC.マーティン

44
一年後、私は道を見つけました!curl -T
マーティンC.マーティン

2
マーティンC.マーティンの回答もサーバーからのリダイレクト後にGETに変わるため、これは私の意見ではより有用な回答です。
Martin

2
GETリダイレクト後を実現するには、パラメーターを追加します--location
Martin M

1
カール7.47とこれは私のために動作しません。theabrahamの答えは常にデフォルトで投稿動作になります。--get(または-G)は、-d(--data)フィールドを強制的にURLパラメータにして機能します。
ジェームズパウエル2017年

101

素早い回答:

1行で、curlコマンドは次のようになります。

a)フォームデータを送信する場合:

curl -X PUT -H "Content-Type: multipart/form-data;" -F "key1=val1" "YOUR_URI"

b)rawデータをjsonとして送信する場合:

curl -X PUT -H "Content-Type: application/json" -d '{"key1":"value"}' "YOUR_URI"

c)POSTリクエストでファイルを送信する場合:

curl -X POST "YOUR_URI" -F 'file=@/file-path.csv'

代替ソリューション:

ChromeストアのPOSTMANアプリを使用して、同等のcURLリクエストを取得できます。これは、より複雑なリクエストを作成するときに特に役立ちます。

他の形式のリクエストや、Java、PHPなどの別のクライアントの場合は、下記のPOSTMAN /コメントをチェックしてください。

要求コードを取得するためのポストマン


4
なぜこれが反対投票されたのかわかりません... curl PUTにJSON本文を渡す方法のアイデアをここにコピーしました。また、postmanは、より複雑なクエリのカールコードを取得するためのかなり素晴らしいツールです:)
MikaelLepistö2016年

2
ありがとう!! 反対票についてなぜ私は何の考えもありません。それを採用するユーザーの不本意かもしれません。私はPOSTMANでモバイル用のすべてのREST APIのrespoを作成しました。これは、RESTを使用するすべての人に提案できる最高の生産性のヒントです。
Prateek 2016年

エンドポイントでjsonデータとパラメーターを渡す実際の例。curl -X PUT -H "Content-Type:application / json" -d '{"amount": "999"、 "type": "car"、 "parent_id": "12345"}' localhost:8080 / transactionservice / transaction / 2222
vikramvi

1
完全なブラウザー(Chromeがインストールされていない場合)とその拡張機能をインストールする必要があると、一部の人にとってはやり過ぎになる可能性があります。少なくとも、Firefoxなどのより一般的な(デフォルトのインストール)Webブラウザーの代替を提供することもできます。この場合、HttpRequesterは同様のジョブを実行します。
rbaleksandar

5
質問はカールに関するものなので、反対票が投じられる可能性があります。
tuxayo

28

Martin C. Martinのコメントに続くPUTの例:

curl -T filename.txt http://www.example.com/dir/

-T(同じ--upload-file)カールがHTTPのPUTを使用します。


8
残念ながら、またはでパラメータを指定する場合-Tは、を使用することはできません。PUTを介してファイルのコンテンツを送信します。リダイレクト後を実現するには、パラメーターを追加します-X PUT-d-F-TGET--location
Martin M

filename.txtがリモートサーバーにある場合はどうなりますか?
bosari 2018年

7
curl -X PUT -d 'new_value' URL_PATH/key

どこ、

X-要求コマンドに使用されるオプション

d-リモートURLにデータを配置するために使用されるオプション

URL_PATH-リモートURL

new_value-サーバーのキーに設定する値


5

私はこのスレッドに遅れましたが、私にも同様の要件がありました。私のスクリプトはcurlのリクエストを動的に作成していたので、GET、POST、PUT全体で同様のコマンド構造が必要でした。

ここに私のために働くものがあります

以下のためのPUTの要求:

curl --request PUT --url http://localhost:8080/put --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

以下のためのPOSTリクエスト:

curl --request POST --url http://localhost:8080/post --header 'content-type: application/x-www-form-urlencoded' --data 'bar=baz&foo=foo1'

以下のためのGETリクエスト:

curl --request GET --url 'http://localhost:8080/get?foo=bar&foz=baz'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.