【发布时间】:2016-02-16 11:06:09
【问题描述】:
我目前正在开发一个基于 REST 的 Java 应用程序,使用新的 Camel REST DSL 作为基础。我试图在返回客户端的 json 响应之前过滤对象列表的结果。
这是我正在尝试做的示例代码:
.get("/api/list").description("Search all data")
.to("bean:apiService?method=searchAll")
.route().description("Lets suppose i need to aply a filter in return")
.to("bean:apiService?method=filter").endRest();
但是在第二个 bean 执行中,我无法访问第一个 bean 执行返回的对象。
class ApiService {
public MyResponseJSON searchAll(MyJsonObjectRequest request) {
MyResponseJSON jsonReturn = new MyResponseJSON();
return jsonReturn;
}
public MyResponseJSON filter(Exchange exchange) {
//i can't do anything here. The message in exchange is empty
}
}
而rest的返回对客户端来说是空的。
我试图不将过滤器放在方法 searchAll 中,因为我使用的是单一责任原则。
如果我删除 .route()....endRest() 响应正常,但未过滤。
使用 Apache Camel 的 REST DSL 可以做到这一点,如果可以,我做错了什么?
谢谢。
【问题讨论】:
-
但是在你的 searchAll 方法中,你不应该接收 Exchange 并在之后返回 Exchange 以便将 Exchange 发送到 filter 方法吗?
-
对不起。该方法接收一个json请求的代表对象。
标签: rest apache-camel