如何在ADF管道中提取分页REST API的全部数据
批量获取REST API所有分页数据的方案
一、利用已知总记录数直接遍历分页
已知总记录约2700条,先优化每页请求条数(尽量设为API允许的最大值,比如100,减少请求次数),然后计算总页数:
总页数 = 向上取整(总记录数 ÷ 每页条数)
比如per_page设为100时,2700÷100=27页,直接循环请求page=1到page=27的接口。
请求URL示例(per_page=100时):
https://eu.api.XXXXXX.com/v1/users?page=1&per_page=100 https://eu.api.XXXXXX.com/v1/users?page=2&per_page=100 ... https://eu.api.XXXXXX.com/v1/users?page=27&per_page=100
注意:如果某一页返回空数组,直接终止循环,避免无效请求。
二、无总记录数时的通用终止策略(备用)
如果后续总记录数有变动,或者想兼容更通用的场景,可以用循环请求直到返回空数据的逻辑:
- 从
page=1开始发起请求; - 检查返回的JSON数组长度:
- 如果数组长度等于设置的
per_page值,说明还有下一页,继续请求下一页; - 如果数组长度小于
per_page(或为空),说明已到最后一页,停止循环。
- 如果数组长度等于设置的
三、在数据复制活动中的具体实现
结合你已有的数据集和复制活动,按以下步骤配置:
- 定义一个变量存储当前页码,初始值设为1;
- 添加循环容器(比如Until循环),设置终止条件为「复制活动返回的数据集为空」;
- 在循环内配置复制活动,动态拼接API请求URL,比如用工具的变量表达式生成:
https://eu.api.XXXXXX.com/v1/users?page=@{variables('currentPage')}&per_page=100 - 复制完成后,将当前页码变量加1;
- 确保复制活动的写入模式为追加,避免覆盖之前获取的数据。
内容的提问来源于stack exchange,提问作者Imran Aslam
相关产品推荐
相关产品推荐

