【发布时间】:2022-08-09 15:22:01
【问题描述】:
我正在尝试将多部分表单数据发送到 API。 API 接受文件(pdf/png 等)并将其上传到松弛通道。我已经定义了 API 的规范并实现了它。来自邮递员的测试可以工作,但是当从流中调用(使用 API 作为连接器)时,API 套件路由器似乎给我带来了问题。
这是 RAML sn-p:
/upload-file:
post:
description: Upload file to a slack channel
body:
multipart/form-data:
properties:
files:
description: The file to be uploaded
type: file
fileTypes: [\'*/*\']
channels:
type: string
thread_ts:
type: string
required: false
在我的测试流程中,我只有一个文件读取操作,然后是转换操作和 api 调用。这是代码:
<file:read doc:name=\"Read\" doc:id=\"a32e1197-cb1e-4a8f-8681-126f01bc177e\" path=\"ArrivalPass.png\" config-ref=\"File_Config\"/>
<ee:transform doc:name=\"Transform Message\" doc:id=\"82770a0c-7580-4324-95e8-a5424f180130\" >
<ee:message >
<ee:set-payload ><![CDATA[%dw 2.0
import dw::module::Multipart
output multipart/form-data
---
Multipart::form([
//Multipart::file({name: \"files\", path: \"ArrivalPass.png\", mime: \"image/png\", fileName: \"ArrivalPass.png\"}),
Multipart::field(\"files\",payload, \"image/png\", \"ArrivalPass.png\"),
Multipart::field(\"channels\",\"C03PLA21UHX\",\"text/plain\")
])]]></ee:set-payload>
</ee:message>
</ee:transform>
<slack-system-api:create-upload-file doc:name=\"Create upload file\" doc:id=\"27fc431c-5c52-485c-8619-56b48ec096ba\" config-ref=\"Slack_System_API_Config\"/>
<logger level=\"INFO\" doc:name=\"Logger\" doc:id=\"97fd7b39-52bc-42a8-a41f-5569a9d13f11\" />
</flow>
代码失败并出现以下错误:
\"\"Cannot coerce Null (null) to Binary
Trace:
at main (Unknown)\" evaluating expression: \"
%dw 2.0
output multipart/form-data
boundary=\'rc34b21aa\'
---
parts : {
files : {
headers : {
\"Content-Type\": \"application/octet-stream\"
},
content : vars[\'create-upload-file-request-data\'][\'root\'][\'files\']},
channels : {
headers : {
\"Content-Type\": \"text/plain\"
},
content : vars[\'create-upload-file-request-data\'][\'root\'][\'channels\']},
thread_ts : {
headers : {
\"Content-Type\": \"text/plain\"
},
content : vars[\'create-upload-file-request-data\'][\'root\'][\'thread_ts\']}}
\".\"
API 代码甚至似乎都没有运行。某种 RAML 验证似乎使我的流程失败。我在这里做错了什么?