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

REST API pagination - How to handle offset exceeding total count

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

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

我看到两个选项:

  1. 一切如常:我 return 一个标准响应,但项目数组为空。
  2. 404: 没有找到匹配此请求的结果。这具有允许我发送空主体的优点,但也具有端点无效的歧义。

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

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

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

  • HTTP 200,count=0,returned 列表中没有项目。
  • HTTP 400 因为调用者请求的 url 无效
  • HTTP 404 因为找不到 return 的项目

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

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

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