1. ホーム
  2. http

[解決済み] HTTP DELETE リクエストにエンティティボディは許されますか?

2022-03-20 22:08:11

質問内容

HTTP DELETEリクエストを発行する場合、リクエストURIは削除するリソースを完全に特定する必要があります。しかし、リクエストのエンティティボディの一部として、余分なメタデータを追加することは可能でしょうか?

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

仕様書 は明示的に禁止も抑制もしていないので、許可されると言う傾向があります。

マイクロソフトも同じように考えていて(会場からざわめきが聞こえてきます)、MSDNの記事で ADO.NETデータサービスフレームワークのDELETEメソッド :

DELETEリクエストがエンティティボディを含む場合、ボディは無視されます[...]。

さらに、以下の通りです。 RFC2616 (HTTP 1.1)は、リクエストに関して次のように言っています。

  • an エンティティボディ が存在するときだけです。 メッセージボディ が存在する場合 (7.2節)
  • があること。 メッセージボディ が含まれることで合図されます。 Content-Length または Transfer-Encoding ヘッダー (4.3節)
  • a メッセージ本文 を送ることができないリクエストメソッドの場合、そのメソッドを含めてはいけません。 エンティティボディ (4.3節)
  • an エンティティボディ は TRACE リクエストでのみ明示的に禁止されており、他のすべてのリクエストタイプは無制限です (セクション 9、特に 9.8)

レスポンスについては、定義されています。

  • があるかどうか メッセージボディ が含まれるかどうかは、リクエストメソッド レスポンスステータス (4.3節)
  • a メッセージ本文 は HEAD リクエストに対する応答では明示的に禁止されています (セクション 9、特に 9.4 参照)。
  • a メッセージボディ は、1xx (informational)、204 (no content)、および 304 (not modified) レスポンスでは明示的に禁止されています (セクション 4.3 参照)。
  • その他のレスポンスには、長さがゼロであってもメッセージボディが含まれます (セクション 4.3)。