web-dev-qa-db-ja.com

HTTP POSTエンティティボディなしで実行するのは悪い習慣と考えられていますか?

ユーザーからの入力を必要とせず、トリガーのみを必要とするプロセスを呼び出す必要があります。プロセスをトリガーするためのボディなしでPOST/uriを使用する予定です。これがHTTPとRESTの観点から悪いと考えられるかどうかを知りたいですか?

136
Suresh Kumar

数か月前にIETF HTTPワーキンググループで この質問 を尋ねました。簡単な答えは:いいえ、悪い習慣ではありません(ただし、詳細についてはスレッドを読むことをお勧めします)。

115
Darrel Miller

GETの代わりにPOSTを使用すると、キャッシュされた応答を返さないようにサーバー(および途中のゲートウェイ)に指示するため、完全に合理的です。

66
Adam Vandenberg

POSTは完全にOKです。 GETとPOSTの違いは、システムの状態を変更していることです(ほとんどの場合、トリガーは何かを「実行」し、データを変更しています)。

ペイロードなしで既にPOSTを使用しましたが、「感じた」のでOKです。ペイロードなしでPOSTを使用するときは、ヘッダーContent-Length: 0を渡す必要があります。 APIクライアントがそれを渡さなかったとき、いくつかのプロキシの問題を覚えています。

42
manuel aldana

ボディなしでPOST/uriを使用する場合、引数を受け取らない関数を使用するようなものです。引数なしでオブジェクトの状態を変更できるURIにUnixタッチ機能を実装することを検討する場合、それは良い選択ではありませんか?

14
yadab

はい、ボディなしでPOSTリクエストを送信し、代わりにクエリ文字列パラメーターを使用しても構いません。ただし、パラメーターにHTTPが有効でない文字が含まれている場合はエンコードする必要があります。

たとえば、POST 'hello world'を終点にする必要がある場合は、次のようにする必要があります。 http://api.com?param=hello% 20world

0
marko982