【问题标题】:Using AssignMessage policy to generate a formatted string in Apigee使用 AssignMessage 政策在 Apigee 中生成格式化字符串
【发布时间】:2014-04-17 07:09:26
【问题描述】:

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

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

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

我想创建查询字符串变量为 querystring = param1=abc&param2=123

我试过了

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

&lt;Ref&gt; 标记可以用来代替&lt;Value&gt; 标记,只有当我得到一个参数的值时。要形成一个字符串,它是行不通的。

【问题讨论】:

    标签: apigee


    【解决方案1】:

    很遗憾,您不能在 AssignVariable 中使用花括号方法进行变量扩展。

    您可以通过 JavaScript 策略执行此操作。下面是 JavaScript 代码:

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

    【讨论】:

    • 这可能是最可行的选择。我可以在分配消息策略中准备查询字符串名称并使用 javascript 形成查询字符串 url
    【解决方案2】:

    此外,您可以在代理请求或目标请求流上使用 AssignMessage 策略来执行此操作。

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

    例如

    <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>
    

    【讨论】:

    • 这个也有帮助。但是,仅此而已,我必须在目标请求流中为每个资源创建一个分配消息策略。
    • 如果this is you,那么您应该在您的回答中披露您的从属关系,也可能在您的用户资料中披露。
    猜你喜欢
    • 2014-03-07
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    相关资源
    最近更新 更多