Как я могу создать глобальную обработку исключений для ошибок 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="{ "message": "Bad request" }" 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="{ "message": "Resource not found" }" 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="{ "message": "Method not allowed" }" 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="{ "message": "Not Acceptable" }" 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="{ "message": "Request Timeout" }" 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="{ "message": "Unsupported media type" }" 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="{ "message": "Unsupported media type" }" 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="{ "message": "Unsupported media type" }" 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="{ "message": "Unsupported media type" }" doc:name="Set Payload"/>
</apikit:mapping>
</apikit:mapping-exception-strategy>
Спасибо
1 ответ
APIKIT соответствует исключению на основе определенного значения apikit: исключение. Таким образом, оно должно быть 1:1 для кодов состояния для определенного класса исключения. В вашем случае, если вы хотите установить 500, тогда он должен возвращаться только тогда, когда исключение соответствует org.mule.module.apikit.exception.InternalServerErrorException