gpt4 book ai didi

mule - 从异常策略返回 json 编码的负载

转载 作者:行者123 更新时间:2023-12-05 01:02:35 25 4
gpt4 key购买 nike

我正在试验使用 Mule 3.4.0CE 来提供 RESTful API 并评估 Jersey 和 Rest-router 模块来处理这个问题。这大部分进展顺利,但我没有找到太多在 Mule 中实现 RESTful API 的具体/完整示例。

目前,对于使用 rest-router 工作的实体,我有简单的 GET 和 PUT 端点。 PUT 流程成功地将内容传递给 JDBC,但我对如何处理实体已存在的情况感到困惑。

我可以依靠 SqlException 来捕获 pk 约束违规并有一个异常策略来处理:

<catch-exception-strategy when="#[exception.causedBy(java.sql.SQLException) and exception.getCauseException().getMessage().contains('Duplicate entry')]" doc:name="Duplicate_entry1">
<set-payload value="The request cannot be processed, the error is #[exception.getSummaryMessage()]" doc:name="Set Payload"/> <!-- [1] -->
<set-property propertyName="http.status" value="400" doc:name="Property"/> <!-- [2] -->
</catch-exception-strategy>

但我对两件事感到困惑:

1) 捕获更具体的异常?我能够获得与 java.sql.SQLException 匹配的异常策略,但更愿意匹配 com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException 的根本原因。使用该类和各种形式的 casusedBy()、causedExactlyBy() 和 casueMatches() 似乎除了外部 SQLException 之外找不到任何东西。

2) 如何返回一个简单的 json 编码的负载来响应这个错误?我想在 catch-exception-strategy 中做的是创建一个 KV 对映射,例如 status="error"和 error_message="entity XX already exists"并将该 json 编码为 mule 有效负载/响应。

令我感到尴尬的是,我似乎无法想出一种方法来简单地使用 MEL 或 MuleStudio 中的各种组件来做到这一点。寻找有关如何执行此操作的指示或文档。我拒绝构建一个自定义组件来返回我想要的 map ,并在离开 Mule 的路上对该 json 进行编码。

最佳答案

对于 1) 在您的 when 子句中,您可以使用 org.mule.util.ExceptionUtilscontainsType() 方法(建立在 Apache ExceptionUtils 类之上) .它检查整个堆栈跟踪是否存在特定异常。
如果您不想在 MEL 中提供完全限定的类名(对于 ExceptionUtils),您可以使用全局导入功能,如 MEL Cheat Sheet 的最后一部分所述.

我已经发表了两篇关于 Mule 上的 RESTful 服务的博文(herehere)。也许,您会发现它们很有用。

关于mule - 从异常策略返回 json 编码的负载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19820888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com