【问题标题】:Apache Camel Filter bean response via REST DSLApache Camel 通过 REST DSL 过滤 bean 响应
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 感谢@Claus 澄清。但是这样一来,两个端点是同时调用还是依次调用呢?我稍后会试试这个。
  • 工作正常!并且第一个的返回被发送到第二个方法签名。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
  • 2015-03-02
相关资源
最近更新 更多