AIP-4233
·
[tommwq@126.com]
自动分页
许多API响应,特别是列表和搜索方法的响应,都是分页的(AIP-158)。调用这些方法的用户需要实现自己的分页逻辑,这是常见的样板代码。
指导
客户端库**可以**提供自动分页解析(意味着它在需要时在后台执行请求)。
当满足以下所有条件时,可以推断出RPC的分页:
- 请求消息包含一个`int32 page_size`字段。
- 请求消息包含一个`string page_token`字段。
- 响应消息包含一个`string next_page_token`字段。
- 响应消息包含一个非原始的`repeated`字段。
实现此功能的客户端库生成器**必须**确保在以前没有客户端分页功能的情况下添加客户端分页功能是一个向后兼容的更改。
实现分页
为了使客户端库实现分页(如AIP-158所定义),它**应该**使用响应消息中的`next_page_token`值来填充请求消息中的`page_token`值,继续无限期地进行,直到`next_page_token`值为空。
重要提示: 实现自动分页解析的客户端库应仅在需要时执行未来页面的请求,并避免贪婪地解析可能很长且不必要的结果集。
实现自动分页的客户端库**必须**仍然以通常的方式提供对响应消息中各个字段的访问。
注意: 如果响应消息有多个非原始的`repeated`字段,则使用第一个(按文件中的出现顺序**和**字段编号)。如果按消息中的出现顺序和字段编号的第一个字段不匹配,实现自动分页的代码生成器**应该**失败并报错。