2017-02-10 30 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