【问题标题】:multipart form data request RAML/ API kit router issues多部分表单数据请求 RAML/API 套件路由器问题
【发布时间】: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 验证似乎使我的流程失败。我在这里做错了什么?

    标签: dataweave mule4


    【解决方案1】:

    尝试为thread_ts 设置一个值,即使它是一个空字符串。

    【讨论】:

      【解决方案2】:

      你找到解决这个问题的方法了吗?我有完全相同的问题。当使用标准 http 请求调用 api 时,它正在工作。一旦 api 被称为 api 连接器,我就会得到与您相同的错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-08-14
        • 2020-09-07
        • 1970-01-01
        • 2012-11-27
        • 2016-12-17
        • 2012-03-16
        • 2016-11-11
        相关资源
        最近更新 更多