我试图抓住一些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");
我发帖时的"来自" 镜头。消息已记录。
但是" to" 似乎不会将 {endpoint} 视为一个参数 - 它将其视为常量 ;所以调用的结果失败了。
我不需要硬编码端点,因为将来如果没有Camel更改,应该扩展booHost API。
换句话说,我需要将http://localhost:8090/api/ *的所有调用捕获并重新发送到同一端点上的http://booHost:8090/api/ *。
也许我应该使用其他组件?或者我怎样才能这样做?
感谢。
答案 0 :(得分:0)
感谢@vikingsteve,我开始阅读 recipientList 。
修改了我的代码最终版本如下:
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"));
按照建议行事。