例如,如果我调用 GET 来获取一个项目,用 DELETE 删除它并再次 GET,那么第二个 GET 应该如何工作?
我的意思是,通过正确遵循 REST 原则,这样做的正确方法是什么,因为 GET 可以被缓存等等?在 REST 中处理陈旧数据的方法是什么?
例如,如果我调用 GET 来获取一个项目,用 DELETE 删除它并再次 GET,那么第二个 GET 应该如何工作?
我的意思是,通过正确遵循 REST 原则,这样做的正确方法是什么,因为 GET 可以被缓存等等?在 REST 中处理陈旧数据的方法是什么?
首先,行为取决于 DELETE 调用作为其响应代码返回的内容。
如果 DELETE 返回200 - OK
,或者204 - No Content
客户端应该继续404 - Not Found
下一次调用 GET。那是因为 202 和 204 意味着资源被立即删除。
但是,如果 DELETE 返回202 - Accepted
,则客户端有可能在之后的一段时间内成功获取资源。那是因为 202 表示该资源已被标记为删除,但不一定立即清理。
其次,如果涉及缓存,则应构建行为以与不存在缓存时会发生的情况保持一致。成功的 DELETE 应始终导致从数据的真实来源以及任何缓存副本中删除。
如最初所述,DELETE 之后的 GET 应该产生 HTTP 404 错误,而不管可能存在的缓存。逻辑代码应该足够聪明,可以从持久存储以及内存存储或缓存中删除记录。此外,UI 应该能够使用您认为合适的任何流程或过程来处理 404 的结果。