2017-02-10 15 views
0

Я использую Anypoint 6.1 и Mule 3.8.1 и рассматриваю дополнительную обработку ошибок для обработки глобальных исключений, созданных комплектом API.Как создать глобальную обработку исключений для ошибок 4xx и 5xx в mule?

Ищу добавить:

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

Что является лучшим подходом для обработки этих ошибок?

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

XML API Набор исключения отображения:

<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> 

Благодаря

ответ

0

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