如何处理REST中的陈旧数据?

时间:2012-05-24 12:06:42

标签: http rest restful-architecture httpverbs

例如,如果我调用GET获取项目,使用DELETE删除它并再次获取它,第二次GET应如何工作?

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

2 个答案:

答案 0 :(得分:4)

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

如果DELETE返回200 - OK204 - No Content,则客户端在下次调用GET时应获得404 - Not Found。那是因为202和204意味着资源被立即删除了。

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

其次,如果涉及到缓存,则应该构建行为以与没有缓存时会发生的情况一致。除了任何缓存副本之外,成功的DELETE应始终导致从数据的真正来源中删除。

答案 1 :(得分:0)

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