REST API 分页 - 如何处理超过总计数的偏移量
REST API pagination - How to handle offset exceeding total count
我有一个 RESTful API,它使用 limit
和 offset
来处理分页(如 here 所述)。每个请求还 return 可用的项目总数,以便客户端正确显示分页。
我想知道如何处理偏移量超过项目总数的调用。我可以很容易地检测到这种情况,因为在获取任何记录之前会检查总计数 - 这允许我跳过记录获取调用作为微优化,因为我知道它不会 return 什么。
我看到两个选项:
- 一切如常:我 return 一个标准响应,但项目数组为空。
- 404: 没有找到匹配此请求的结果。这具有允许我发送空主体的优点,但也具有端点无效的歧义。
我不确定选择哪个选项,或者是否有更好的选项。
编辑: 似乎正确的解决方案是 return a 204。它允许我发送一个空的正文,没有端点无效的歧义。
正如我在另一个答案中所述,我会使用以下之一:
- HTTP 200,count=0,returned 列表中没有项目。
- HTTP 400 因为调用者请求的 url 无效
- HTTP 404 因为找不到 return 的项目
我认为在这种情况下 return 错误(4xx + 错误信息)是安全的,因为以下假设之一可能会超出偏移量:
- 编码错误
- 调用程序未从头开始获取数据(无新鲜状态)
- 调用者忽略了分页数据(出现在每个响应中)
由于负载的原因,分页响应中的 HTTP 204 不可行。分页时,您应该 return 分页信息,例如项目 returned、项目总数、偏移量等,这是 HTTP 204 不允许的。
我有一个 RESTful API,它使用 limit
和 offset
来处理分页(如 here 所述)。每个请求还 return 可用的项目总数,以便客户端正确显示分页。
我想知道如何处理偏移量超过项目总数的调用。我可以很容易地检测到这种情况,因为在获取任何记录之前会检查总计数 - 这允许我跳过记录获取调用作为微优化,因为我知道它不会 return 什么。
我看到两个选项:
- 一切如常:我 return 一个标准响应,但项目数组为空。
- 404: 没有找到匹配此请求的结果。这具有允许我发送空主体的优点,但也具有端点无效的歧义。
我不确定选择哪个选项,或者是否有更好的选项。
编辑: 似乎正确的解决方案是 return a 204。它允许我发送一个空的正文,没有端点无效的歧义。
正如我在另一个答案中所述,我会使用以下之一:
- HTTP 200,count=0,returned 列表中没有项目。
- HTTP 400 因为调用者请求的 url 无效
- HTTP 404 因为找不到 return 的项目
我认为在这种情况下 return 错误(4xx + 错误信息)是安全的,因为以下假设之一可能会超出偏移量:
- 编码错误
- 调用程序未从头开始获取数据(无新鲜状态)
- 调用者忽略了分页数据(出现在每个响应中)
由于负载的原因,分页响应中的 HTTP 204 不可行。分页时,您应该 return 分页信息,例如项目 returned、项目总数、偏移量等,这是 HTTP 204 不允许的。