REST API 分页 - 如何处理超出总计数的偏移量

标签 rest pagination offset

我有一个 RESTful API,它使用 limitoffset 来处理分页(如所述 here )。每个请求还会返回可用项目的总数,以便客户端能够正确显示分页。

我想知道如何处理偏移量超过项目总数的调用。我可以轻松检测到这种情况,因为在获取任何记录之前会检查总计数 - 这允许我作为微优化跳过记录获取调用,因为我知道它不会返回任何内容。

我看到两个选项:

  1. 一切如常:我返回标准响应,但包含空数组。
  2. 404:未找到与此请求匹配的结果。这样做的优点是允许我发送空正文,但也存在端点无效的歧义。

我不确定该选择哪个选项,或者是否有更好的选项。

编辑:似乎正确的解决方案是 return a 204 。它允许我发送一个空的正文,而不会出现端点无效的歧义。

最佳答案

正如我在另一个答案中所说,我会使用以下之一:

  • HTTP 200,count=0,返回的列表中没有任何项目。
  • HTTP 400,因为调用者请求的网址无效
  • HTTP 404,因为找不到要返回的项目

我认为在这种情况下返回错误(4xx + 错误信息)是安全的,因为以下假设之一可能会超出偏移量:

  • 编码错误
  • 调用程序未从头开始获取数据(无新鲜状态)
  • 调用者忽略了分页数据(出现在每个响应中)

由于有效负载的原因,分页响应中的 HTTP 204 是不可信的。分页时,您应该返回分页信息,例如返回的项目、总项目、偏移量等,这是 HTTP 204 不允许的。

关于REST API 分页 - 如何处理超出总计数的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32081423/

相关文章:

.net - 在 .Net 中编写 RESTful 服务 "client"的最佳方法?

ios - 如何在iOS中正确处理 View Controller 中的数据持久性和状态警报

jquery - 如何为 Bootstrap "list-group-item"创建分页?

jquery - 有人可以分享一个非常简单的带有分页功能的 JQuery Ajax 版本吗?

animation - Unity动画循环偏移不起作用

ios - 水平居中元素上的附加偏移 X

java - 在 JTextPane 中查找字符串的偏移量

java - 将 XML 字符串转换为 Jersey XML 输出中的有效 XML

api - 设计一个接受大量数据作为输入的 REST API 端点

PHP - XHTML 表单上的分页列表