Mule APIkit:"Flow not found" 而不是 HTTP 415 不受支持的媒体类型

Mule APIkit: "Flow not found" instead of HTTP 415 unsupported media type

我在 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 响应。

我错过了什么,在这种情况下我必须在哪里告诉配置它应该 return HTTP 415?

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

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

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

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