2017-02-10 2 views
0

私はAnypoint 6.1とMule 3.8.1を使用していますが、APIキットで作成されたグローバル例外処理に対する余分なエラー処理を見ています。muleで4xxと5xxエラーのグローバル例外処理を作成するにはどうしたらいいですか?

私は追加するには探しています:

  • 408要求タイムアウト
  • 429あまりにも多くのリクエスト
  • 500内部サーバーエラー
  • 503サービスは使用できません

最善のアプローチは何ですかこれらのエラーを処理するには?

私はAPIキットの例外処理を使用するように見えましたが、上記に使用する予定のタイプが見つかりません。誰も私はこれらのエラーに使用する予想される型を見つけることができる知っていますか?

の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と一致する場合にのみ返すようにします。

関連する問題