我在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}&param2={request.queryparam.p2}</Value>
</AssignVariable>
只有当我获得一个参数的值时,才能使用 <Ref>
标记代替<Value>
标记。要形成一个字符串,它就不会起作用。
答案 0 :(得分:1)
不幸的是,你不能在AssignVariable中使用变量扩展的花括号方法。
您可以通过JavaScript政策执行此操作。这是JavaScript代码:
var myqs = "param1=" + context.getVariable("request.queryparam.p1") +
"¶m2=" + 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>