У меня есть верблюжные (2.16.4) маршруты, описанные в Spring DSL следующим образом:
...
<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 от конечной точки покоя до конечной точки скорости (файл stub-answer.vm)
Согласно документам, Camel должен передавать каждый параметр из запроса в заголовках сообщений, то есть ${headers.param2}
.Он отлично работает с параметрами пути (/service_url/{param3}
), но не работает с параметрами запроса.
Я обнаружил, что все параметры запроса передаются в виде строки в заголовок CamelHttpQuery.И мне удалось извлечь его из файла .vm с помощью языка Velocity, например:
#set($splittedParams = $headers.CamelHttpQuery.split("\/"))
#set($splittedParamsSize = $splittedParams.size())
#set($param2Index = $splittedParamsSize - 1)
#set($param2 = $splittedParams[$param2Index])
Но это обманка, и я считаю, что есть более простой способ получить параметр запроса по имени (может быть, с каким-то конфигом в xml).
TIA.