陈旧分页的HTTP响应代码

时间:2014-09-10 15:27:23

标签: rest http

我有一个运行SQL查询的Web服务,按几列之一排序,并返回一个请求的页面(如跳过M限制N)。它前面的用户界面跟随着“更多”的加载。模式,在一个视图中累积所有加载的结果页面。

问题是新的和删除的记录,这些记录可能随时发生,导致“更多”的结果。错误地对齐,并根据使用的排序,甚至模糊应该显示的新记录。除了在前端的计时器上自动刷新之外,我还要为RESTful请求和响应格式添加一个时间戳字段,以允许webapp检测到视图应该完全重新加载到'加载更多'调用

我的问题是,哪种HTTP状态代码最适合此信号?在reviewing the codes中,我看不到完全合适。我想过使用302 Found链接到第1页',但我想知道这是否会导致不需要的重定向缓存。我还想到了400 Bad Request,但请求没有任何问题,只需要重新加载数据。

页面是通过POST /path调用提供的,其中所请求的页面是在JSON正文中提供的。

我不是一个完整的纯粹主义者,所以任何能让它在没有缓存或其他副作用的情况下工作的东西都是可以接受的,但我想尽可能地遵守REST原则。

1 个答案:

答案 0 :(得分:1)

  

任何可以在没有缓存或其他副作用的情况下使其工作的内容都是可以接受的

对POST请求are not cacheable的响应,除非您明确标记它们。因此,您可以使用状态代码,响应标头和响应实体的任意组合将“请重新加载”消息传达给客户端。

您可以使用conditional requests。在If-Unmodified-Since标题中包含客户的时间戳。如果客户端过时,则回复412 Precondition Failed。客户必须知道如何重新加载。

你可以尝试307 Temporary Redirect,但前提是你在/path编码分页,因为收到307后,(我假设你在这里做AJAX),XMLHttpRequest将透明地重新提交对新Location的POST请求(至少这是我的Chromium所做的)。您的实际页面JSON必须在其覆盖的范围内包含元信息,以便客户端知道它必须替换行,而不是附加它们。

相关问题