2017-02-08 13 views
0

спрашивает об этом для некоторой экспертизы mulesoft.mule mapping-exception-strategy только доходит до первой ветки 401

Предполагается, что следующая стратегия отображения исключений будет входить на hhtp.status 401, 403, 429, но продолжает падать в ветвь 401 для кодов состояния 401 и 403 (по крайней мере, и определяется как отладкой, так и протоколом, записанным на консоль):

<apikit:mapping-exception-strategy doc:name="waysact-adaptor-main-exception-strategy"> 
     <apikit:mapping statusCode="401"> 
      <apikit:exception value="org.mule.module.http.internal.request.ResponseValidatorException"/> 
      <logger message="psc&gt;&gt;&gt; logging 401 = #[payload]" level="INFO" doc:name="log-http-401"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="403"> 
      <apikit:exception value="org.mule.module.http.internal.request.ResponseValidatorException"/> 
      <logger message="psc&gt;&gt;&gt; logging 403 = #[payload]" level="INFO" doc:name="log-http-403"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="429"> 
      <apikit:exception value="org.mule.module.http.internal.request.ResponseValidatorException"/> 
      <logger message="psc&gt;&gt;&gt; logging 429 = #[payload]" level="INFO" doc:name="log-http-429"/> 
     </apikit:mapping> 
     <apikit:mapping statusCode="400"> 
      <apikit:exception value="org.mule.module.http.internal.request.ResponseValidatorException"/> 
      <logger message="psc&gt;&gt;&gt; logging anything = #[payload]" level="INFO" doc:name="logging-anything"/> 
     </apikit:mapping> 
    </apikit:mapping-exception-strategy> 

это потому, что она ветвится только по типу исключения org.mule.module.http.internal.request.ResponseValidatorException? Я думал, что он предназначен для перехода на код состояния?

есть другая стратегия, стратегия исключения-исключения, которая должна входить в разные типы объектов исключений.

ответ

0

Ветвление исключения на основе http.status может быть определена со стратегией выбора исключений, как показано ниже, например,

<choice-exception-strategy doc:name="Choice Exception Strategy"> 
    <catch-exception-strategy when="#[message.inboundProperties.'http.status'=='404']" doc:name="Catch Exception Strategy" > 
    <logger message="Exceptions message is ... #[exception.message]" level="ERROR" doc:name="exceptionLogger"/> 
    <set-variable variableName="exceptionMessage" value="#[exception.message]" doc:name="Set exceptionMessage"/> 
    <set-payload value="{ errors: {  errorCode: #[message.inboundProperties.'http.status'],  errorMessage: #[flowVars.exceptionMessage] } }" doc:name="Set Exception Payload"/> 
</catch-exception-strategy> 
<catch-exception-strategy doc:name="Catch Exception Strategy" > 
    <logger message="Exception message is ... #[exception.message]" level="ERROR" category="com.project.stacktrace" doc:name="exceptionLogger"/> 
    <set-variable variableName="exceptionMessage" value="#[exception.message]" doc:name="Set exceptionMessage"/> 
    <set-payload value="{ errors: {  errorCode: #[message.inboundProperties.'http.status'],  errorMessage: #[flowVars.exceptionMessage] } }" doc:name="Set Exception Payload"/> 
</catch-exception-strategy> 
    </choice-exception-strategy> 
+0

спасибо, это выглядит многообещающим; будет расследоваться в ближайшее время – psc

+0

yup, это работает. благодаря – psc

0

APIkit соответствует исключению, основанному на определенном значении исключения, а не определенном статусом. Используйте стратегию исключения исключений и определите в ней несколько стратегий исключения исключений. Убедитесь, что каждая стратегия исключения catch имеет уникальное исключение, чтобы создать правильный код http.status и необходимую полезную нагрузку для исключения.

Например, если вы хотите, чтобы 400 было брошено, убедитесь, что стратегия исключения catch имеет значение BadrequestException. Если коды состояний выходят из HTTP запрашивающих, соответствует ResponseValidatorException и установить входящий http.status и полезную нагрузку исключения

+0

спасибо, я собираюсь расследовать wrt для обоих предложений – psc