От 3 до 4 обрабатывают запросы об ошибках для типов ошибок и статуса http
Я перемещаю файл обработки ошибок из Mule 3 в Mule 4 с помощью Anypoint Studio 7.
Мои запросы:
- Как мне теперь сделать эту проверку, поскольку я не вижу ту же информацию в сообщении об исключении?
#[exception.causedBy(org.mule.module.http.internal.request.ResponseValidatorException)]"
- Где я могу найти свойство http.status сейчас? Я вижу ее как переменную, когда она равна 200, но когда выдается ошибка, она исчезает и не может найти ее в сообщении.
- Где я могу найти список типов обработки ошибок?
Ниже перечислены типы обработки ошибок, которые меня особенно интересуют, но не знаю, является ли это правильным значением для типа ошибки:
HTTP:BAD_REQUEST
HTTP:UNAUTHORIZED
HTTP:FORBIDDEN
HTTP:RESOURCE_NOT_FOUND
HTTP:METHOD_NOT_ALLOWED
HTTP:NOT_ACCEPTABLE
HTTP:CONFLICT
HTTP:UNSUPPORTED_MEDIA_TYPE
HTTP:INTERNAL_SERVER_ERROR
HTTP:BAD_GATEWAY
Ниже приведен фрагмент кода Mule 3, который я переношу, и я думаю, что он основан на шаблоне:
<choice-exception-strategy name="global-exception-strategy">
<catch-exception-strategy when="#[exception.causedBy(org.mule.module.http.internal.request.ResponseValidatorException)]" doc:name="Caused By (org.mule.module.http.internal.request.ResponseValidatorException)">
<choice doc:name="Choice">
<when expression="#[message.inboundProperties['http.status'] == 401]">
<set-variable variableName="errorMessage" value="Upstream service did not authorize the request." doc:name="Set Error Message"/>
<flow-ref name="global-bad-gateway-response-sub-flow" doc:name="Bad Gateway Response"/>
</when>
<otherwise>
<set-variable variableName="errorMessage" value="Upstream service internal error." doc:name="Set Error Message"/>
<flow-ref name="global-bad-gateway-response-sub-flow" doc:name="Bad Gateway Response"/>
</otherwise>
</choice>
</catch-exception-strategy>
</choice-exception-strategy>
<sub-flow name="global-bad-gateway-response-sub-flow">
<set-property propertyName="http.status" value="401" doc:name="Set Status"/>
<set-payload value="UNAUTHORIZED" doc:name="Set Error Code" mimeType="application/java"/>
<flow-ref name="global-prepare-error-response-sub-flow" doc:name="Prepare Error Response"/>
</sub-flow>
Спасибо
1 ответ
В Mule 4 код состояния http для ответа об ошибке, расположенный здесь #[error.errorMessage.attributes['statusCode']]
Используйте этот вид проверки
#[contains(error.description,'internal server error (500).')]
Привет, Mule 4, существует 3 типа обработчиков ошибок.
- При распространении ошибки
- При ошибке Продолжить
- Попробуй поймать
Вы можете найти и определить тип ошибки, для которой вы хотите отловить ошибку, в конфигурации обработчика ошибок. Скриншот для справки.
Чтобы получить код статуса http, вы можете использовать #[error.muleMessage.attributes.StatusCode]
Для получения дополнительной информации и лучшего понимания обработки ошибок Mule 4, пожалуйста, обратитесь:
https://www.tutorialsatoz.com/error-handling-in-mule-4/
https://www.tutorialsatoz.com/retry-mechanism-until-success-vs-flow-reference/