28

REST 原則のベスト プラクティスを尊重するために、作成/更新されたエンティティを POST/PUT で返すのが最善ですか? または、Location ヘッダーを含む空の HTTP 本文を返しますか?

より正確には、リソースが POST によって作成されたときに、以下を返す必要があります。

  • ステータス 201 + Location ヘッダー + (HTTP 本文で作成されたエンティティ)

また

  • ステータス 201 + ロケーション ヘッダー + (空の本文)

PUT によってリソースが更新された場合、以下を返す必要があります。

  • ステータス 200 + (HTTP 本文の更新されたエンティティ)

また

  • ステータス 204 (空のボディ)
4

1 に答える 1

17

他の人々の API を研究して、彼らがどのようにそれを行っているかを確認することは有益かもしれません。有用なパブリック API のほとんどは、Web 上のどこかに公開されています。

たとえば、Overmind プロジェクトは REST API をここで公開しています。一般に、彼らのアプローチは、新規または変更されたエンティティ ID とそのすべての属性を含む JSON ディクショナリを返すことです。

Operation                     HTTP Method   URL           Query string
--------------------------    -----------   ---           ------------
Create node for a specific 
provider                      POST          /api/nodes/   provider_id=PROVIDER_ID

HTTP Payload returned
---------------------
JSON dict with id of node created (generated on the server side) and all other 
attributes of the node

Twilio の APIは、XML または JSON を返すことができます。何か問題が発生すると、Twilio は HTTP 応答本文で例外を返します。XML では、これら<RestException><TwilioResponse>

一般に、PUT または POST でオブジェクトを返すと、オブジェクトのプロパティ (デフォルト値など) に加えられた変更が含まれるため、有用であることがわかります。

于 2013-12-04T18:41:42.307 に答える