Apache Camel过滤bean通过REST DSL响应

时间:2016-02-16 11:06:09

标签: rest apache-camel

我目前正在使用新的Camel REST DSL作为基础,开发基于REST的Java应用程序。我试图在返回客户端的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
} 
}

休息的回归对客户来说是空的。

我正在尝试不将过滤器放在方法searchAll中,因为我使用的是单一责任原则。

如果我删除.route().... endRest(),则响应正常,但不会过滤。

这可以使用Apache Camel的REST DSL,如果可能的话,我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:2)

在rest-dsl中只有toroute,而不是两者,例如:

.get("/api/list").description("Search all data")
   .route()
     .to("bean:apiService?method=searchAll")
     .to("bean:apiService?method=filter");