サーバーから既に削除されたリソースに対して PUT(更新) 操作があるとします。
API 応答コードは何ですか?
- 4xx - クライアントの問題、同じクエリを再度送信しないでください
また
- 5xx - サーバーの問題、サーバーでリソースが見つかりませんでした
また
- 上記のどちらでもありませんか?
サーバーから既に削除されたリソースに対して PUT(更新) 操作があるとします。
API 応答コードは何ですか?
また
また
まず、CRUD 操作を HTTP メソッドにマッピングする際には注意してください。PUT は更新メソッドではありません。PUT は、URI の下に格納されているエンティティを、提供されているエンティティに置き換える要求です。これは、完全な表現が提供されている場合は更新に使用できますが (PUT で部分的な更新は行わないでください)、完全な表現とリソース URI がわかっている場合は、作成にも使用できます。
したがって、答えは実際にはサーバー側のセマンティクスに依存します。原則として、リソースがすでに削除されていて、同じ URI への GET が 404 を返す場合、PUT は提供された表現でリソースを再作成する必要があります。
それが望ましくなく、クライアントが以前に削除されたリソースを再作成できないようにする場合は、クライアントが URI で GET を試行したときに、削除されたリソースが 410 Gone 応答コードを返す必要があると思います。リソースがある時点で存在していたが戻ってこないことを明確にし、それを新しい表現に置き換えようとすると 409 Conflict で失敗し、現在の状態ではそれが許可されていないことが詳細に示されます。