如何为mule中的4xx和5xx错误创建全局异常处理



我正在使用Anypoint 6.1和Mule 3.8.1,并正在研究API工具包创建的全局异常处理的额外错误处理。

我希望添加:

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

感谢

APIKIT根据定义的APIKIT:exception值匹配异常。因此,状态代码与定义的异常类的比例应该是1:1。在您的情况下,如果您想设置500,则只有当异常与org.mule.module.apikit.exception.InternalServerErrorException 匹配时才返回

最新更新