2017-02-08 2 views
0

fragend für einige mulesoft Expertise.Mule Mapping-Exception-Strategie fällt nur bis zum ersten 401 Zweig

Die folgende Exception-Mapping-Strategie soll auf hhtp.status 401, 403, 429 verzweigen, fällt aber weiter in den 401-Zweig für die Statuscodes 401 und 403 (zumindest bestimmt durch Debugging und Protokollierung an die Konsole)):

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

ist dies, weil es nur auf Ausnahmetyp org.mule.module.http.internal.request.ResponseValidatorException verzweigt? Ich dachte, es sollte auf den Statuscode verzweigen?

Es gibt eine andere Strategie, Choice-Exception-Strategie, die auf verschiedene Ausnahme-Objekttypen verzweigen sollte.

Antwort

0

Branching Ausnahme basierend auf http.status kann wie unten Beispiel mit Wahl Ausnahme Strategie definiert werden,

+0

danke, das sieht vielversprechend aus; wird in Kürze untersuchen – psc

+0

yup, das funktioniert. Vielen Dank – psc

0

APIkit stimmt mit der Ausnahme überein, die auf dem definierten Ausnahmewert und nicht auf dem definierten statusCode basiert. Verwenden Sie die Choice-Ausnahmestrategie und definieren Sie darin eine Mehrfachfang-Ausnahmestrategie. Stellen Sie sicher, dass jede Catch-Ausnahmestrategie mit einer eindeutigen Ausnahme übereinstimmt, um den richtigen http.status-Code und die gewünschte Ausnahme-Payload bereitzustellen.

Wenn Sie beispielsweise möchten, dass 400 geworfen wird, müssen Sie sicherstellen, dass eine Catch-Ausnahmestrategie mit BadrequestException übereinstimmt. Wenn die Statuscodes aus dem HTTP-Anforderer kommen, die ResponseValidatorException entsprechen und stellen Sie die eingehenden http.status und Ausnahme Nutzlast

+0

danke, werde ich zu beiden Vorschlägen zu untersuchen untersuchen – psc

Verwandte Themen