骆驼:POST-通过URL-模式请求路由

Camel: POST-request routing by URL-pattern

我正在尝试捕获一些 POST-请求,记录一条消息(将来可能是正文或参数);然后将它们进一步传递给 booHost,这样客户端就会得到调用的结果:

    from("restlet:http://localhost:8090/api/endpointFoo?restletMethod=post")
            .log("oh, it's a message!")
            .routeId("someAPI")
            .to("http://booHost:8090/api/endpointFoo?bridgeEndpoint=true&restletMethod=post");

效果很好。

但是: 我需要的是能够以这种方式工作的 URL 模式。我正在尝试:

    from("restlet:http://localhost:8090/api/{endpoint}?restletMethod=post")
            .log("oh, it's a message!")
            .routeId("someAPI")
            .to("http://booHost:8090/api/{endpoint}?bridgeEndpoint=true&restletMethod=post");

"from" 投篮时 post。消息已记录。

但是 "to" 似乎没有将 {endpoint} 视为参数 - 它将其视为 常数;所以那个调用的结果失败了。

我不需要硬编码端点,因为 booHost API 将来应该在没有 Camel 更改的情况下进行扩展。

换句话说,我需要在同一个端点上对 http://localhost:8090/api/* to be catched and resent to http://booHost:8090/api/* 的所有调用。

也许我应该使用其他组件?或者我怎样才能做到这一点?

谢谢。

感谢@vikingsteve,我开始阅读有关 recipientList 的内容。

我已经根据this FAQ question

修改了我的代码

最终版本如下所示:

    from("restlet:http://localhost:8090/api/{endpoint}?restletMethod=post")
            .log(LoggingLevel.INFO, "POST-request to /${headers.endpoint} was sent")
            .routeId("someAPI")
            .recipientList(simple("http://booHost:8090/api/${headers.endpoint}?bridgeEndpoint=true&restletMethod=post"));

它按照建议工作。