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

如何在Azure Data Factory调用API时实现基于rel="next"的分页功能

ADF基于响应头Link字段的rel="next"分页实现方案

你可以根据API的实际场景选择以下两种实现方式,优先选择内置分页规则,配置成本最低。

方案1:使用复制活动内置分页规则(推荐)

该方案适配符合RFC 5988标准的Link响应头格式,无需自定义逻辑:

  • 首先创建REST类型的链接服务,填入API的基础地址、认证信息,和你Postman测试的配置保持一致
  • 创建对应的REST数据集,绑定到上述链接服务
  • 新建复制活动,源端选择你创建的REST数据集,找到「分页规则」配置项,类型选择 ResponseHeader.Link.Next
  • Sink端选择ADLS Gen2的CSV数据集,根据需求配置CSV的列分隔符、编码、引号处理规则即可
  • 触发复制活动运行,ADF会自动识别响应头Link中的rel="next"地址,循环拉取所有页数据后统一写入CSV文件

方案2:自定义Until循环实现(适配非标准Link格式)

如果内置规则无法识别你的Link字段格式,可以用管道变量+循环实现自定义分页:

  • 首先在管道中定义3个变量:
    • nextPageUrl:字符串类型,初始值为API第一页的完整请求地址
    • isLastPage:布尔类型,初始值为false
    • resultData:数组类型,用来暂存每页返回的业务数据
  • 添加Until活动,循环条件设置为 @variables('isLastPage')
  • 在Until活动内部按顺序添加以下活动:
    1. Web活动:配置和Postman一致的请求方法、认证信息,URL填写@variables('nextPageUrl')
    2. Set Variable活动(更新nextPageUrl):用表达式解析Web活动返回的响应头,提取rel="next"对应的URL,参考表达式:
      @if(contains(activity('调用API').Output.headers.Link, 'rel="next"'), trim(split(split(activity('调用API').Output.headers.Link, 'rel="next"')[0], '<')[1], '>; '), '')
      
    3. Set Variable活动(更新isLastPage):判断nextPageUrl是否为空,表达式为@equals(variables('nextPageUrl'), '')
    4. Set Variable活动(暂存数据):将当前页返回的业务数据数组追加到resultData变量中
  • 循环结束后添加复制活动,将resultData中的全量数据写入ADLS Gen2的CSV文件即可;如果数据量较大,也可以在每次循环内单独写入一个CSV分片,后续再做合并处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:36:04