web-dev-qa-db-ja.com

CURLコマンドラインURLパラメータ

私はCURLを使用してurlパラメータでDELETEリクエストを送信しようとしています。私がやっている:

curl -H application/x-www-form-urlencoded -X DELETE http://localhost:5000/locations` -d 'id=3'

しかし、サーバーにはパラメータid = 3が表示されません。GUIアプリケーションを使用してみたところ、http://localhost:5000/locations?id=3のようにURLを渡しても正常に動作します。私は本当にこのGUIアプリケーションよりもむしろCURLを使用したいと思います。誰が私が間違っていることを指摘してもらえますか?

145
darksky

「application/x-www-form-urlencode」ヘッダー、なぜですか。やってみよう:

curl -X DELETE 'http://localhost:5000/locations?id=3'

または

curl -X GET 'http://localhost:5000/locations?id=3'
213
felipsmartins

Felipsmartinsは正しいです。

これがPOST要求ではない場合、実際には-d/ - dataオプションを使用できないためです。しかし、これは-Gオプションを使用した場合でも可能です。

つまり、これができるということです。

curl -X DELETE -G 'http://localhost:5000/locations' -d 'id=3'

ここでは少しばかげていますが、あなたがコマンドラインを使っていて、たくさんのパラメータを持っている場合、それはもっときれいになります。

CURLコマンドは通常非常に長いのでこれを言っています、それで改行をエスケープする複数の行でそれを作る価値があります。

curl -X DELETE -G \
'http://localhost:5000/locations' \
-d id=3 \
-d name=Mario \
-d surname=Bros

Zshを使うなら、これは明らかにより快適です。 zshでは1行ずつ移動できるため、前のコマンドを再編集する必要があるときがあります。 (ただ言って)

それが役に立てば幸い。

114
Mig