7

例如,如果我调用 GET 来获取一个项目,用 DELETE 删除它并再次 GET,那么第二个 GET 应该如何工作?

我的意思是,通过正确遵循 REST 原则,这样做的正确方法是什么,因为 GET 可以被缓存等等?在 REST 中处理陈旧数据的方法是什么?

4

2 回答 2

4

首先,行为取决于 DELETE 调用作为其响应代码返回的内容。

如果 DELETE 返回200 - OK,或者204 - No Content客户端应该继续404 - Not Found下一次调用 GET。那是因为 202 和 204 意味着资源被立即删除。

但是,如果 DELETE 返回202 - Accepted,则客户端有可能在之后的一段时间内成功获取资源。那是因为 202 表示该资源已被标记为删除,但不一定立即清理。

其次,如果涉及缓存,则应构建行为以与不存在缓存时会发生的情况保持一致。成功的 DELETE 应始终导致从数据的真实来源以及任何缓存副本中删除。

于 2012-05-24T16:12:55.320 回答
0

如最初所述,DELETE 之后的 GET 应该产生 HTTP 404 错误,而不管可能存在的缓存。逻辑代码应该足够聪明,可以从持久存储以及内存存储或缓存中删除记录。此外,UI 应该能够使用您认为合适的任何流程或过程来处理 404 的结果。

于 2012-05-24T15:58:58.837 回答