Mule APIkit:"未找到流量"而不是HTTP 415不支持的媒体类型

时间:2016-11-25 08:34:52

标签: mule apikit

我在Mule Community Edition 3.8应用程序中定义了以下流程:

<flow name="post:/api/v1:application/json:api-v1-config">
  <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
  <expression-component>
    payload = app.registry['RestServiceBean_2.10'].postApiCall(
      payload,
      message);
  </expression-component>
</flow>

在同一文件中,HTTP 415的映射

<apikit:mapping statusCode="415">
  <apikit:exception value="org.mule.module.apikit.exception.UnsupportedMediaTypeException" />
  <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
  <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Unsupported media type"/>
</apikit:mapping>

现在,当我使用Content-Type: application/xml向该端点发送请求时,我在日志中看到一个名为Flow not found for resource ...的异常并收到HTTP 500响应。

我缺少什么,在这种情况下,我必须告诉配置它应该返回HTTP 415?

2 个答案:

答案 0 :(得分:0)

如果您的项目不是基于RAML的,则需要创建一个单独的Flow来处理所有其他媒体类型,然后手动throw new org.mule.module.apikit.exception.UnsupportedMediaTypeException()

答案 1 :(得分:0)

我想我必须从流程名称中删除application/json:

<flow name="post:/api/v1:api-v1-config">
  <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>

使用此配置,将抛出正确的异常(HTTP 415)。