几乎每个主要的云存储服务提供商,如 Google、Box、OneDrive 都使用请求参数将分页信息传递给 Web 服务并更新响应对象以进一步将下一页信息传递给客户端。
尽管拥有 Range 和 Link 等标准 HTTP 标头以及自定义标头,但人们倾向于使用查询参数来传达此类信息。
使用此类标准标头在客户端和服务器之间传达分页信息可保持标准响应的唯一性,因为我们不需要通过响应属性传递此类信息。
那么,在 REST API 中实现分页的最佳实践是什么?使用 HTTP 标头或使用查询参数???
几乎每个主要的云存储服务提供商,如 Google、Box、OneDrive 都使用请求参数将分页信息传递给 Web 服务并更新响应对象以进一步将下一页信息传递给客户端。
尽管拥有 Range 和 Link 等标准 HTTP 标头以及自定义标头,但人们倾向于使用查询参数来传达此类信息。
使用此类标准标头在客户端和服务器之间传达分页信息可保持标准响应的唯一性,因为我们不需要通过响应属性传递此类信息。
那么,在 REST API 中实现分页的最佳实践是什么?使用 HTTP 标头或使用查询参数???
根据http规范:
代理可以丢弃包含它不理解的范围单元的 Range 头字段。这意味着任何中间代理,包括缓存服务器,都可能在您的“范围”标头到达您的服务器之前将其丢弃。
链接标题与分页无关。
代理必须转发无法识别的标头字段,除非 [..] 代理专门配置为阻止或以其他方式转换此类字段。我读到代理可以配置为阻止所有无法识别的标头,这与Range标头相同。
除此之外,使用查询参数进行分页(最好是偏移量/限制)是一种标准。如果你有充分的理由反对标准,那很好。缺点是现在使用你的 API 的每个人都必须学习你的做事方式,以及其他人做事的方式。这降低了采用率并增加了支持电话。