【发布时间】:2012-05-31 00:29:03
【问题描述】:
例如,如果我调用 GET 来获取一个项目,用 DELETE 删除它并再次 GET,那么第二个 GET 应该如何工作?
我的意思是,通过正确遵循 REST 原则,既然 GET 可以被缓存,那么正确的方法是什么?在 REST 中处理陈旧数据的方法是什么?
【问题讨论】:
-
如果您刚刚删除了该项目,为什么还要尝试再次“获取”它?它不会存在。也许我遗漏了什么或者问题不清楚。
-
@Brent Pabst:考虑例如 UI 应用程序中的链接,其中删除发生在弹出窗口中,但 GET 链接在打开页面中并且没有得到更新,或者通过邮件传输并且用户将它们插入浏览器地址栏直接在删除等之间。这个要缓存!这个想法是,如果该项目不再存在,GET 应该如何工作。禁用所有缓存?有一些缓存可以接受吗?所有这些的 REST 方法是什么?
-
第二个 GET 自然会返回 HTTP 代码
404 Not Found。缓存是另一回事,我将提供一个非常不透明的答案:“它取决于”。但是如果有有第二个GET,它似乎很明显会产生404? -
Chris 的评论应该是问题的答案,它绝对是 404,该死的缓存。无论如何,DELETE 都应该从缓存中清除该资源的密钥。
标签: http rest restful-architecture httpverbs