1

假设我们对已从服务器中删除的资源进行 PUT(update )操作

API 响应代码应该是什么?

  • 4xx - 客户端问题,不要尝试再次发送相同的查询

或者

  • 5xx - 服务器问题,在服务器上找不到资源

或者

  • 以上都不是?
4

1 回答 1

1

首先,小心将 CRUD 操作映射到 HTTP 方法。PUT 不是更新方法。PUT 是用提供的实体替换存储在 URI 下的实体的请求。如果给出了完整的表示,这可以用于更新(请不要使用 PUT 进行部分更新),但也可以用于创建,当您知道完整的表示和资源 URI 时。

因此,答案实际上取决于服务器端语义。原则上,如果资源已经被删除并且对同一 URI 的 GET 将返回 404,那么 PUT 应该重新创建它,并提供表示。

如果不希望这样,并且您不希望客户端能够重新创建之前删除的资源,那么我会说当客户端尝试对 URI 进行 GET 时,您删除的资源应该返回 410 Gone 响应代码,清楚地表明资源在某个时候存在但它不会回来,并且尝试用新的表示替换它应该会失败并出现 409 冲突,详细说明当前状态如何不允许这样做。

于 2013-11-01T17:38:40.713 回答