Прежде всего позвольте мне сказать, что если вы намереваетесь использовать в качестве параметров запроса строку HTTP-запроса, это не очень хорошая идея. Было бы гораздо разумнее использовать HTTP-запросчик, чтобы просто отправить каждый атрибут с запросчиком в качестве параметра запроса. Он автоматически применяет кодировку URL и обрабатывает параметры.
Пример:
<set-variable value='#[{
name:"<<your_name>>",
age:"<<your_age>>",
city:"<<your_city>>",
role:"<<your_role>>"
}]' doc:name="Set Variable" variableName="person"/>
<http:request method="GET" config-ref="HTTP_Request_configuration" path="/backend" >
<http:query-params><![CDATA[#[vars.person]]]></http:query-params>
</http:request>
Посмотрите, как вы просто скажете ему использовать объект для генерации параметров запроса. Запрос на вывод будет выглядеть следующим образом:
GET /backend?name=%3C%3Cyour_name%3E%3E&age=%3C%3Cyour_age%3E%3E&city=%3C%3Cyour_city%3E%3E&role=%3C%3Cyour_role%3E%3E HTTP/1.1
Если вы абсолютно уверены, что вам нужно создать строку параметров запроса вручную, см. Ниже.
Пример:
%dw 2.0
output application/json
import * from dw::core::URL
---
// it is not recommended to use this, use the HTTP Requester <http:query-params> instead
encodeURI(
payload pluck ((value, key, index) ->
{ key: key, value: value}
)
orderBy( $.key )
reduce ((val, acc = "") ->
acc ++ (if(sizeOf(acc) !=0) "&" else "") ++ val.key ++ "=" ++ val.value)
)