如何在ADF中以application/json类型将Blob大JSON文件发送至API
解决Azure Data Factory中Blob大JSON文件发送至API的问题
方案1:复制活动+REST接收器自定义Header
ADF的REST复制接收器支持自定义请求头,可直接设置Content-Type: application/json,适配大文件传输:
- 新建复制活动,源配置为Blob存储,指定目标40MB JSON文件路径
- 接收器选择REST类型,填写API基础URL并配置认证(如API Key、OAuth2)
- 进入接收器高级设置,在Headers中添加键值对:
Content-Type: application/json - 请求方法设为
POST,请求体直接映射源Blob的完整JSON内容(复制活动默认支持大文件的流式传输,无需担心内存限制) - 测试运行,确认API接收正确
方案2:Azure Function中转处理
若复制活动无法满足需求(如API有特殊校验),用Azure Function作为中间层规避Web活动的请求体大小限制:
- 创建HTTP触发的Azure Function,实现以下逻辑:
- 接收ADF传入的Blob文件路径、目标API地址参数
- 通过Azure Blob SDK读取Blob中的JSON内容
- 向目标API发起POST请求,设置
Content-Type: application/json头,将JSON内容作为请求体发送
- 在ADF中用Web活动调用该Function,传递必要参数
- 此方式灵活度高,支持任意大小的Blob文件处理
方案3:分块发送(针对API有单请求大小限制的场景)
如果目标API不支持40MB单请求,拆分JSON的data数组分批发送:
- 用Lookup活动读取Blob中JSON的
data数组(需调整Lookup的Row count参数以读取完整数组) - 用ForEach活动遍历拆分后的小批次数据(如每批次拆分1000条)
- 在ForEach内部使用Web活动,构造包含
Name、Id和当前批次data的JSON请求体,设置Content-Type: application/json头后发送到API
内容的提问来源于stack exchange,提问作者moderator
相关产品推荐
相关产品推荐

