有没有人使用 Spring Resttemplate 实现 Camel Rest 消费者?
我不知道这一点,也不太可能在那个方向找到一些东西,因为 Camel 已经有内置组件来消耗 rest endpoints。
互联网上的一些示例使用码头服务器来使用休息端点。为什么你需要一个简单的休息消费者的码头服务器?
我相信码头被用作消费者而不是生产者端点。所以你不需要“服务器”。或者,也许您看到了一个使用码头作为服务器来服务 OAuth 端点的示例?
如果您原谅我的方法,我建议保留 Camel HTTP/Rest 功能,以使用 OAuth 使用 REST API。我在 Gist 上找到了这个例子:
from("direct:authService").tracing()
.setHeader(Exchange.HTTP_PATH)
.simple("<auth service context>/oauth2/token")
.setHeader("CamelHttpMethod")
.simple("POST")
.setHeader("Content-Type")
.simple("application/x-www-form-urlencoded")
.setHeader("Accept")
.simple("application/json")
.setBody()
.constant("grant_type=client_credentials&client_id=<client id>&client_secret=<client sec>")
.to("https4://<remote auth service url>")
.convertBodyTo(String.class)
.log("response from API: " + body())
.choice()
.when().simple("${header.CamelHttpResponseCode} == 200")
.unmarshal().json(JsonLibrary.Jackson, AccessResponseToken.class)
.setHeader("jwt").simple("${body.access_token}")
.to("direct:<some direct route>")
.otherwise()
.log("Not Authenticated!!!");
如果你想坚持下去,OAuthRestTemplate
你可以实现一个Processor
或一个bean来包装这些调用并将授权令牌返回到你的路由。