1

サーバーから既に削除されたリソースに対して PUT(更新) 操作があるとします。

API 応答コードは何ですか?

  • 4xx - クライアントの問題、同じクエリを再度送信しないでください

また

  • 5xx - サーバーの問題、サーバーでリソースが見つかりませんでした

また

  • 上記のどちらでもありませんか?
4

1 に答える 1

1

まず、CRUD 操作を HTTP メソッドにマッピングする際には注意してください。PUT は更新メソッドではありません。PUT は、URI の下に格納されているエンティティを、提供されているエンティティに置き換える要求です。これは、完全な表現が提供されている場合は更新に使用できますが (PUT で部分的な更新は行わないでください)、完全な表現とリソース URI がわかっている場合は、作成にも使用できます。

したがって、答えは実際にはサーバー側のセマンティクスに依存します。原則として、リソースがすでに削除されていて、同じ URI への GET が 404 を返す場合、PUT は提供された表現でリソースを再作成する必要があります。

それが望ましくなく、クライアントが以前に削除されたリソースを再作成できないようにする場合は、クライアントが URI で GET を試行したときに、削除されたリソースが 410 Gone 応答コードを返す必要があると思います。リソースがある時点で存在していたが戻ってこないことを明確にし、それを新しい表現に置き換えようとすると 409 Conflict で失敗し、現在の状態ではそれが許可されていないことが詳細に示されます。

于 2013-11-01T17:38:40.713 に答える