0

我在 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?

4

2 回答 2

1

我发现我必须application/json:从流名称中删除:

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

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

于 2016-12-07T15:15:06.360 回答
0

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

于 2016-12-01T10:57:27.070 回答