使用 HTTP 状态代码 206 - 部分内容进行分页

Ale*_*don 2 rest pagination http

背景

我们的团队提出了206 - Partial Content在 REST API 中使用状态代码的想法,以指示GET对大型数据集的请求比返回的内容更多,以便允许 API 用户进行分页。hasMore这将是我们当前在响应正文中使用的标志的替代方案。

专业版

  • 使用已知的状态代码将允许 API 的用户依赖通用 HTTP 语言,而不是学习我们的“专有”语言。
  • 声称是否有更多结果表明这是非常合适的。

骗局

  • 由于所有请求都有一个pageSize数字查询参数,因此通信可能不正确,206 - Partial Content因为响应包含查询参数请求的所有结果pageSize
  • 该声明206 - Partial Content通常用于字节流,而不是集合列表。

问题

在哪些情况下可以应该 206 - Partial Content用于响应静态GET请求而发送的结果集的分页?

Voi*_*son 5

我们的团队提出了在 REST API 中使用状态代码 206 - 部分内容的想法,以指示对大型数据集的 GET 请求的内容多于返回的内容,以便允许 API 用户进行分页

这听起来是个坏主意。

IANA HTTP 状态代码注册表当前将RFC 9110标识为206 部分内容状态代码的权威定义。

206(部分内容)状态代码表示服务器正在成功满足范围请求......

如果您还不熟悉范围请求,请查看RFC 9110,第 14 节。但简短的版本:如果传入请求不包含Range header,那么您就没有范围请求。

尝试重新利用在网络域上的206通用文档传输中具有特定含义的,以表示定制资源模型本地的某些含义,会增加通用组件误解正在发生的情况的可能性;您希望实现的收益不太可能超过风险。

TL;DR:正常一点 - 返回带有 200 状态代码的响应,而这正是无聊的 Web 服务器所做的事情。


如果您试图指示寻呼;状态代码是错误的工具。相反,请考虑使用第一个/最后一个/下一个/上一个等链接关系的网络链接