PUT
レスポンスボディで何も返さない(null)RESTfulな操作についての人々の意見は何だろうと思っていました。
PUT
レスポンスボディで何も返さない(null)RESTfulな操作についての人々の意見は何だろうと思っていました。
回答:
HTTP仕様(RFC 2616)には、適用可能ないくつかの推奨事項があります。これが私の解釈です:
200 OK
既存のリソースへの更新の成功したPUTのHTTPステータスコード。応答本文は必要ありません。(セクション9.6に従って、204 No Content
さらに適切です。)201 Created
新しいリソースの正常なPUTのHTTPステータスコード。新しいリソースの最も具体的なURIがLocationヘッダーフィールドに返され、その他の関連するURIとリソースのメタデータが応答の本文にエコーされます。(RFC 2616セクション10.2.2)409 Conflict
による3に失敗したPUT用のRD未遂更新とレスポンスボディで現在のリソース間の違いのリストで、パーティの修正。(RFC 2616セクション10.4.10)400 Bad Request
失敗したPUTのHTTPステータスコード。PUTが失敗した理由を説明する自然言語のテキスト(英語など)が応答本文に含まれます。(RFC 2616セクション10.4)No response body needed
200に関して言及されていません。実際、応答本文はPUTに関してまったく言及されていません。それだけを述べていますIf an existing resource is modified, either the 200 (OK) or 204 (No Content) response codes SHOULD be sent to indicate successful completion of the request.
ここでのほとんどの回答とは対照的に、PUTは(もちろんHTTPコードに加えて)更新されたリソースを返すはずだと思います。
リソースをPUT操作の応答として返す必要があるのは、リソース表現をサーバーに送信すると、サーバーがこのリソースに何らかの処理を適用できるため、クライアントはこのリソースの処理方法を知りたいからです。リクエストが正常に完了した後のようになります。(それ以外の場合は、別のGET要求を発行する必要があります)。
HTTP / 1.1仕様(セクション9.6)は、適切な応答/エラーコードを論じています。ただし、応答の内容は扱いません。
何を期待しますか?単純なHTTP応答コード(200など)は、私には単純明快です。
クライアントが新しく作成されたリソースを見つけることができる場所を指す「Location」ヘッダーとともに、「Created」の201のHTTP応答コード。
私はサービスでRESTful APIを使用しましたが、これが私の意見です。まず、共通のビューに到達する必要がありPUT
ます。作成または取得しないリソースを更新するために使用されます。
私は次のリソースを定義しました:Stateless resource
とStateful resource
:
ステートレスリソースこれらのリソースについては、空の本文を含むHttpCodeを返すだけで十分です。
ステートフルリソース例:リソースのバージョン。この種類のリソースの場合、変更するときにバージョンを提供する必要があるため、完全なリソースを返すか、バージョンをクライアントに返します。これにより、クライアントは更新アクションの後にget要求を送信する必要がなくなります。
しかし、サービスやシステム、それを維持するためにsimple
、clearly
、easy to use and maintain
最も重要なことです。
空のリクエストボディがGETリクエストの本来の目的と一致し、空のレスポンスボディがPUTリクエストの本来の目的と一致するように。
大丈夫そうです...私は成功/失敗/投稿された時間/#バイト受信/などの初歩的な兆候だと思います 望ましいでしょう。
編集:私はデータの整合性および/または記録保持の線に沿って考えていました。MD5ハッシュや受信時刻のタイムスタンプなどのメタデータは、大きなデータファイルに役立つ場合があります。
HTTP応答のヘッダーと本文には違いがあります。PUTは本文を返すことはありませんが、ヘッダーで応答コードを返す必要があります。成功した場合は200、失敗した場合は4xxを選択してください。ヌルの戻りコードなどはありません。なぜこれをしたいのですか?
200
、PUT、DELETE、またはその他のメソッドの使用を明確に除外するものは何も見つからないため、これはMozillaの部分ではかなりおかしいようです。私は何か見落としてますか?MozillaがW3やIETFのボスになるなど?;)または、おそらくPostelの堅牢性の原則を聞いたことがありません。