场景是:我正在实现一个RESTful web服务,它将充当存储在远程C系统上的实体的缓存。web服务的需求之一是,当远程C系统离线时,它将使用最后缓存的数据响应GET请求,但将其标记为“陈旧”。
我计划将数据标记为陈旧的方法是返回一个HTTP状态码,而不是200 (OK)。我考虑使用503 (服务不可用),但我相信它会使一些C#/Java HTTP客户端抛出异常,这将间接迫使用户使用控制流的异常。
你能推荐一个更合适的状态代码吗?或者我应该只返回200并在响应正文中添加一个过期标志?另一种选择是定义一个单独的资源来通知连接状态,并让客户端单独处理它。
发布于 2011-10-26 10:06:24
我将返回200OK和一个适当的特定于应用程序的响应。似乎没有合适的其他HTTP状态代码,因为是否以及如何使用响应的决定是传递给客户端的。我还建议不要使用标准HTTP缓存控制标头来实现此目的。我只会使用它们来控制第三方(中间层和客户端)缓存。使用这些头来传递特定于应用程序的信息,这将应用程序逻辑与缓存控制联系在一起。虽然这可能不是一目了然的,但独立发展应用程序逻辑和缓存策略的能力确实有长期的好处。
https://stackoverflow.com/questions/7880280
复制相似问题