You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Object-Service-API分页查询如何获取指定页的pageToken?

Slate Object-Service-API 分页跳页问题解答

问题背景

Slate平台启用分页功能的表格设置pageSize=10时,后端依赖Object-Service-API完成查询,接口请求体格式如下:

{
  "objectSet": "objectSet.ObjectSet",
  "objectSetContext": "optional<ObjectSetContext>",
  "pageSize": "integer",
  "pageToken": "optional<PageToken>",
  "sort": "optional<list<PropertySort>>"
}

已知总记录数共100条,首次查询传入"pageToken": null时,会返回前10条记录,同时响应携带的pageToken格式类似"v1.abc-some-uuid-xyz.10"。
需求为直接跳转到第5页(展示第41-50条结果),分两种场景处理:

  • 持有首页查询返回的、仍在有效期内的pageToken
  • 未保存pageToken,或已有pageToken已过期
    Slate查询标签页配置入口参考截图:
    Slate OSS查询标签页配置截图

具体处理方案

首先明确Slate OSS返回的pageToken结构固定为{版本标识}.{查询快照UUID}.{已返回记录偏移量}:

  • 中间的UUID段是和本次查询条件、排序规则、查询范围绑定的唯一快照标识,在token有效期内固定不变,用来保证分页过程中数据一致性
  • 后缀数字是当前已经返回的记录总数,也就是下一页查询的起始偏移位置(从0开始计数)

场景1:持有首页有效未过期pageToken

不需要逐页翻页调用接口,直接修改token的后缀偏移量即可:
第5页的起始偏移为(5-1)*10 = 40,保留首页token的版本号和快照UUID段,把后缀的.10替换为.40,最终传入的pageToken为v1.abc-some-uuid-xyz.40,即可直接精准获取第41-50条的第5页数据。

注意:构造token时必须保证本次请求的objectSet、查询条件、sort排序参数、pageSize和生成首页token的请求完全一致,否则会触发token无效报错,或出现分页数据重复/遗漏问题。

场景2:无有效pageToken

不能随意编造快照UUID段,否则会直接返回参数错误,按以下步骤处理:

  1. 保持和跳页目标完全一致的查询条件、排序规则、pageSize参数,发起一次首页查询(传入pageToken: null),拿到本次响应返回的首页pageToken
  2. 提取该token的版本号和快照UUID段,按照场景1的规则拼接后缀.40,得到目标pageToken传入接口,即可直接获取第5页数据
  3. 如果使用的是较早版本的Slate,不支持同快照下修改偏移量直接跳页,只能顺序翻页:依次用前一页返回的pageToken请求下一页,直到拿到后缀为.40的pageToken,再请求即可得到第5页结果。该方式需要4次额外接口调用,效率较低,仅作兼容方案使用。

内容的提问来源于stack exchange,提问作者Julio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 00:01:18