【问题标题】:How can I create global exception handling for 4xx and 5xx errors in mule?如何为 mule 中的 4xx 和 5xx 错误创建全局异常处理?
【发布时间】:2017-06-28 16:14:04
【问题描述】:

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

我想补充:

  • 408 请求超时
  • 429 请求过多
  • 500 内部服务器错误
  • 503 服务不可用

处理这些错误的最佳方法是什么?

我希望使用 API Kit 异常处理,但我找不到用于上述情况的预期类型。有谁知道我在哪里可以找到用于这些错误的预期类型?

XML API Kit 异常映射:

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

谢谢

【问题讨论】:

    标签: exception exception-handling mule anypoint-studio apikit


    【解决方案1】:

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

    【讨论】:

    • 还有其他可以解释为500的异常如java.lang.Exception。您需要决定哪一个映射到每个代码。
    猜你喜欢
    • 2011-05-21
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    相关资源
    最近更新 更多