Power Automate/Logic Apps中如何实现基于页码的REST API分页遍历
页码式REST API全量数据拉取实现方案(适配Power Automate / Logic Apps)
Logic Apps和Power Automate的内置分页开关仅支持基于续接令牌(continuation token)的分页逻辑,页码传参类分页直接用「变量+Do until循环」实现即可,具体操作步骤如下:
- 初始化流程变量
流程触发后、调用接口前,先创建3个变量:currentPage:整数类型,初始值设为1,用于记录当前请求的页码totalPages:整数类型,初始值设为1,用于存储接口返回的总页数,第一次请求后会被真实值覆盖allResults:数组类型,初始值设为空数组[],用于存储所有分页拉取到的业务数据
- 配置Do until循环
把循环的终止条件设置为currentPage 大于 totalPages,同时在循环设置里把并发控制值改为1,关闭并行执行,避免页码错乱、数据重复。如果数据量较大,顺便把循环超时时间从默认的1小时调整为更长的时间(比如PT24H,即24小时),防止流程中途超时中断。 - 配置循环内的执行逻辑
按顺序在循环内部添加以下操作:- 调用目标REST API,请求参数中
pageNumber字段绑定currentPage变量,pageSize按接口要求传固定值(比如示例里的100) - 解析接口返回的JSON结构,接口返回结构参考如下:
提取返回体中的{ "_results": [ { ... }, { ... } ], "pageNumber": 1, "totalPageCount": 5, "pageSize": 100, "pageCount": 100, "totalCount": 445 }totalPageCount和_results字段 - 给
totalPages变量重新赋值,值为接口返回的totalPageCount - 把当前页返回的
_results数组合并到allResults变量中,直接用表达式批量合并即可,不需要逐条追加,效率更高,参考表达式:union(variables('allResults'), body('解析JSON操作')?['_results']) - 给
currentPage变量自增1,参考表达式:add(variables('currentPage'), 1)
- 调用目标REST API,请求参数中
额外注意:如果目标接口有请求频率限制,在循环末尾加一个固定延迟操作(比如每次请求后等待1-2秒),避免触发429限流报错。
按照上述逻辑,第一次请求会拉取第1页数据,拿到真实总页数后逐页递增请求,直到当前页码超过总页数时自动终止循环,最终allResults变量里存储的就是全量业务数据。
内容的提问来源于stack exchange,提问作者Gangrel
相关产品推荐
相关产品推荐

