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="{ &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 ответа

Решение

Я понял, что я должен удалить 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()

Другие вопросы по тегам