我已经在Spring DSL中描述了骆驼(2.16.4)这样的路线
...
<from uri="restlet:http://localhost:8081/service_url?restletMethod=get"/>
<to uri="velocity:{{templates.uri}}/stub-answer.vm{{velocity.opts}}"/>
...
典型请求类似于http://localhost:8081/service_url?param1=123¶m2=hello
我想获取请求的查询参数的值,其中名称为param2,从rest端点到速度端点(文件stub-answer.vm)
根据文档,Camel应该在消息头中传递来自请求的每个参数,即${headers.param2}
。它适用于路径参数(/service_url/{param3}
),但不适用于查询参数。
我发现所有查询参数都作为字符串传递给CamelHttpQuery标头。我已经设法在Velocity语言的帮助下将其解压缩到.vm文件中,就像这样
#set($splittedParams = $headers.CamelHttpQuery.split("\/"))
#set($splittedParamsSize = $splittedParams.size())
#set($param2Index = $splittedParamsSize - 1)
#set($param2 = $splittedParams[$param2Index])
但它是一个ducktape,我相信有更多直接的方式来获取请求参数的名称(可能在xml中有一些路由配置)。
TIA。