Использование политики AssignMessage для создания форматированной строки в Apigee

Я переписываю URL-адрес в конечной точке API. Таким образом, строка запроса по умолчанию не передается серверной службе.

Я хочу создать переменную с именем «строка запроса» и отформатировать эту строку с параметрами входного запроса. Как я могу это сделать?

Например: apigee api url = https://myapigee-prod.agigee.net/v1/test/resource1?p1=abc&p2=123

Я хочу создать переменную строки запроса как строку запроса = param1=abc¶m2=123

Я старался

<AssignVariable>
    <Name>myqs</Name>
    <Value>param1={request.queryparam.p1}&amp;param2={request.queryparam.p2}</Value>
</AssignVariable>

Тег <Ref> можно использовать вместо тега <Value>, только если я получаю значение одного параметра. Чтобы сформировать строку, это не сработает.


person user3267925    schedule 02.04.2014    source источник


Ответы (2)


К сожалению, вы не можете использовать метод раскрытия переменной в фигурных скобках внутри AssignVariable.

Вы можете сделать это с помощью политики JavaScript. Вот код JavaScript:

var myqs = "param1=" + context.getVariable("request.queryparam.p1") +
    "&param2=" + context.getVariable("request.queryparam.p2");
context.setVariable("myqs", myqs);               
person Mike Dunker    schedule 02.04.2014
comment
Это, пожалуй, самый жизнеспособный вариант. Я могу подготовить имена строк запроса в политике назначения сообщений и использовать javascript для формирования URL-адреса запроса. - person user3267925; 03.04.2014

Кроме того, для этого можно использовать политику AssignMessage в потоке запроса прокси или целевого запроса.

http://apigee.com/docs/api-services/content/generate-or-modify-messages-using-assignmessage

e.g.

<AssignMessage name="GenerateRequest">
<AssignTo createNew="false" type="request">Request</AssignTo>
<Set>
<QueryParams>
  <QueryParam name="p1">{request.queryparam.param1}</QueryParam>
  <QueryParam name="p2">{request.queryparam.param2}</QueryParam>
</QueryParams>
</Set>
</AssignMessage>
person Imran Qureshi    schedule 02.04.2014
comment
Этот тоже помогает. Но просто мне нужно будет создать одну политику назначения сообщений для каждого ресурса в целевом потоке запросов. - person user3267925; 03.04.2014
comment
Если это вы, то вам следует раскрывать свою аффилиацию в своих ответах и, возможно, также в своих пользовательских профиль. - person Mogsdad; 04.09.2015