Как я могу создать глобальную обработку исключений для ошибок 4xx и 5xx в муле?

Я использую Anypoint 6.1 и Mule 3.8.1 и смотрю на дополнительную обработку ошибок по сравнению с глобальной обработкой исключений, созданной набором API.

Я хочу добавить:

  • 408 Время ожидания запроса
  • 429 Слишком много запросов
  • 500 - внутренняя ошибка сервера
  • сервис 503 недоступен

Каков наилучший подход для обработки этих ошибок?

Я пытался использовать обработку исключений API Kit, но не могу найти ожидаемый тип для использования выше. Кто-нибудь знает, где я могу найти ожидаемые типы, чтобы использовать для этих ошибок?

Исключения для набора API XML:

<apikit:mapping-exception-strategy name="apiKitGlobalExceptionMapping">
    <apikit:mapping statusCode="400">
        <apikit:exception value="org.mule.module.apikit.exception.BadRequestException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Bad request&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>      
    <apikit:mapping statusCode="404">
        <apikit:exception value="org.mule.module.apikit.exception.NotFoundException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Resource not found&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>
    <apikit:mapping statusCode="405">
        <apikit:exception value="org.mule.module.apikit.exception.MethodNotAllowedException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Method not allowed&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>
    <apikit:mapping statusCode="406">
        <apikit:exception value="org.mule.module.apikit.exception.NotAcceptableException" />
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Not Acceptable&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>    
    <apikit:mapping statusCode="408">
        <apikit:exception value="java.util.concurrent.TimeoutException"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Request Timeout&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <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="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="429">
        <apikit:exception value="java.lang.Exception"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="500">
        <apikit:exception value="java.lang.Exception"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>  
    <apikit:mapping statusCode="503">
        <apikit:exception value="java.lang.Exception"/>
        <set-property propertyName="Content-Type" value="application/json" doc:name="Property"/>
        <set-payload value="{ &quot;message&quot;: &quot;Unsupported media type&quot; }" doc:name="Set Payload"/>
    </apikit:mapping>          
</apikit:mapping-exception-strategy>

Спасибо

1 ответ

APIKIT соответствует исключению на основе определенного значения apikit: исключение. Таким образом, оно должно быть 1:1 для кодов состояния для определенного класса исключения. В вашем случае, если вы хотите установить 500, тогда он должен возвращаться только тогда, когда исключение соответствует org.mule.module.apikit.exception.InternalServerErrorException

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