使用AssignMessage策略在Apigee中生成格式化字符串

时间:2014-04-02 19:25:30

标签: apigee

我在API端点进行URL重写。因此,默认情况下,查询字符串不会传递给后端服务。

我想创建一个名为" querystring"的变量。并使用输入查询参数格式化该字符串。我怎么能这样做?

例如:apigee api url = https://myapigee-prod.agigee.net/v1/test/resource1?p1=abc&p2=123

我想创建querystring变量为querystring = param1 = abc& param2 = 123

我试过

<AssignVariable>
    <Name>myqs</Name>
    <Value>param1={request.queryparam.p1}&amp;param2={request.queryparam.p2}</Value>
</AssignVariable>
只有当我获得一个参数的值时,才能使用

<Ref>标记代替<Value>标记。要形成一个字符串,它就不会起作用。

2 个答案:

答案 0 :(得分:1)

不幸的是,你不能在AssignVariable中使用变量扩展的花括号方法。

您可以通过JavaScript政策执行此操作。这是JavaScript代码:

var myqs = "param1=" + context.getVariable("request.queryparam.p1") +
    "&param2=" + context.getVariable("request.queryparam.p2");
context.setVariable("myqs", myqs);               

答案 1 :(得分:0)

此外,您可以使用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>