Mule APIkit: "Поток не найден" вместо неподдерживаемого типа носителя HTTP 415
Я определил следующий поток в приложении 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 в таких случаях?
2 ответа
Решение
Я понял, что я должен удалить application/json:
из названия потока:
<flow name="post:/api/v1:api-v1-config">
<set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
При такой конфигурации выдается правильное исключение (HTTP 415).
Если ваш проект не основан на RAML, вам нужно создать отдельный поток для обработки всех других типов медиа, а затем вручную throw new org.mule.module.apikit.exception.UnsupportedMediaTypeException()