我在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="{ "message": "Unsupported media type" }" doc:name="Unsupported media type"/>
</apikit:mapping>
现在,当我使用Content-Type: application/xml
向该端点发送请求时,我在日志中看到一个名为Flow not found for resource ...
的异常并收到HTTP 500响应。
我缺少什么,在这种情况下,我必须告诉配置它应该返回HTTP 415?
答案 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)。