ADF数据流调用Smartsheet REST API的POST请求体配置问题
解决ADF数据流REST Sink向Smartsheet提交数据的请求体配置问题
问题根源
ADF数据流的REST Sink默认会把流入的所有字段包装成JSON键值对对象,导致你构造的请求体被嵌套在字段名(比如Body或cells)下,不符合Smartsheet API要求的直接包含cells数组的JSON结构。
正确配置步骤
用Derived Column构造原生JSON请求体
在Sink之前添加Derived Column转换,使用ADF原生的JSON构造语法生成符合要求的结构,不要用字符串拼接:@(cells = array(@(columnId = 58**********60, value = "ADF Test 1")))这个表达式会直接生成标准JSON结构:
{"cells": [{"columnId": 58**********60, "value": "ADF Test 1"}]}注意:删除之前单独的
Body或cells字段,让这个Derived Column的结果作为唯一流入Sink的内容。配置REST Sink的请求体模式
在Sink设置中:- 将
Request body模式设为Single document(单行数据提交场景) - 确认请求方法为
POST,目标URL正确指向Smartsheet添加行接口(https://api.smartsheet.com/2.0/sheets/{sheetId}/rows) - 在Linked Service中配置好Smartsheet的API认证(比如Bearer Token)
- 将
错误细节说明
- 日志中的
\是ADF对JSON引号的转义显示,并非实际发送的请求体内容,无需处理。 Some()是ADF底层日志使用的Scala语言Option类型标记,仅表示请求体存在,不是错误原因。
内容的提问来源于stack exchange,提问作者F.R.
相关产品推荐
相关产品推荐

