apiKit路由器Mule4后多部分/表单数据中断

apiKit路由器Mule4后多部分/表单数据中断,mule,dataweave,anypoint-studio,mule4,apikit,Mule,Dataweave,Anypoint Studio,Mule4,Apikit,请求通过Mule4应用程序中的ApiKit路由器后,从多部分/表单数据读取数据时出现问题 有一个RAML,在ApiKit路由器中用于验证和路由请求 #%RAML 1.0 title: ACC race data API description: API for designing and updating race data version: 1 protocols: [ HTTPS, HTTP ] /acc/reverse/entrylist: description: Used to

请求通过Mule4应用程序中的ApiKit路由器后,从多部分/表单数据读取数据时出现问题

有一个RAML,在ApiKit路由器中用于验证和路由请求

#%RAML 1.0 
title: ACC race data API
description: API for designing and updating race data
version: 1
protocols: [ HTTPS, HTTP ]

/acc/reverse/entrylist:
  description: Used to manipulate entrylist for ACC reverse grid.
  post:
    description: Creates new entrylist based on supplied quali result, race one result and race one entrylist.
    queryParameters:
      positionsRotated:
        description: Parameter defining how many positions to rotate.
        required: false
        type: number
        example: 30
    body:
      multipart/form-data:
        properties:
          qualifyResult:
                description: File containing qualifying result.
                type: file
                fileTypes: ['application/json']
                required: true
          raceOneResult:
                description: File containing race 1 result.
                type: file
                fileTypes: ['application/json']
                required: true
验证工作正常-如果数据以不正确的格式发送,将返回异常。对于格式正确的数据,请求被路由到流
post:\acc\reverse\entrylist:multipart\form data:acc race data config
。 在这些步骤之间,有效负载格式(由Mule)从可读形式的有效负载(见下文)更改为
java.io。ByteArrayInputStream@379ebdd5

ApiKit路由器前有效负载数据(接收到应用程序)的可读格式:

----------------------------180928595588258919887097
Content-Disposition: form-data; name="qualifyResult"; filename="json1.json"
Content-Type: application/json

{
    "json1": "1"
}

----------------------------180928595588258919887097
Content-Disposition: form-data; name="raceOneResult"; filename="json2.json"
Content-Type: application/json

{
    "json2": "2"
}

----------------------------180928595588258919887097--

如果在apiKit之前使用,则以下dataweave脚本可以正常工作,但在apiKit调用的流中不起作用:

%dw 2.0
output application/json
---
payload.parts[1].content
如果在ApiKit之前使用上述DW,则输出示例如下:

{
  "json2": "2"
}
org.mule.runtime.core.api.expression.ExpressionRuntimeException: "javax.mail.internet.ParseException - Missing start boundary, while reading `payload` as MultiPart.
Trace:
  at main (Unknown)" evaluating expression: "%dw 2.0

output application/json

---

payload.parts[1].content".
如果在ApiKit之后使用相同的DW,则输出示例如下:

{
  "json2": "2"
}
org.mule.runtime.core.api.expression.ExpressionRuntimeException: "javax.mail.internet.ParseException - Missing start boundary, while reading `payload` as MultiPart.
Trace:
  at main (Unknown)" evaluating expression: "%dw 2.0

output application/json

---

payload.parts[1].content".
在Anypoint Studio 7.8.0中进行测试,应该在完成并准备部署后在Mule4 CE运行时上使用。 使用Postman v8.5.1进行测试。发送包含qualifyResult和raceOneResult部分的表单数据体,其中包含JSON数据、默认标题、基本身份验证、查询参数
positionsRotated=30
。 调用的Url:
https://localhost:443/api/acc/reverse/entrylist?positionsRotated=30
尝试使用原始类型的有效负载手动生成多部分/表单数据体,但结果相同。如果没有ApiKit,一切正常。。但是我想用它来验证请求的有效性


感谢所有回复有用提示的人

我用最新版本测试了一个类似的场景,我没有这个问题。如果您使用的是较旧版本的HTTP连接器和APIKit模块,请尝试升级到最新版本。Anypoint Studio有一个检测连接器更新版本的功能:

我正在接收multipart并尝试读取这两个文件以生成json.Sorry。这个问题我不清楚。应用程序使用什么版本的APIKit和HTTP连接器?Np,APIKit模块版本为1.3.6,HTTP连接器版本为1.5.6。将APIKit版本更新为1.5.1有助于解决此问题。谢谢你的提示!请根据此建议创建一个答案,这样我就可以给你一张绿色支票来给你评分。有道理,我的最新版本测试成功了。我已经更新了这个答案。