如何在Apigee服务标注中使用动态URL

时间:2014-08-09 18:38:44

标签: apigee callout dynamic-url

这很简单。我需要Apigee服务标注(SC)中的<URL>元素作为动态元素。

例如:<URL>http://{dynamicURL}</URL>

在运行时确定dynamicURL,并且每个请求的值都不同。它将具有完整的目标URL,例如(ip:port / abc / orderid / 1234)

<HTTPTargetConnection>
<Properties />
<URL>http://{dynamicURL}</URL>
</HTTPTargetConnection>

试过这些:

  • 在JS政策中,尝试在上下文中设置servicecallout.{scpolicyname}.target.url。在这种情况下,只会发送动态ip:port。缺少URI /abc/orderid/1234

  • AssignMessage政策中,创建了一个标题并尝试在SC网址元素中使用它,例如request.header.name,{request.header.name},前面是$。

  • AssignMessage政策中,创建了一个变量&amp;尝试在SC中使用它,例如{dynamicURL},前面有$

这是一个常见的用例,我确信必须有一个简单的方法。需要你的帮助。

谢谢,

Somu

2 个答案:

答案 0 :(得分:1)

您可以结合使用ServiceCallout和AssignMessage策略。

您可以在ServiceCallout政策中设置ip:port。正如您所指出的那样,在<URL>http://{dynamicURL}</URL>的元素<HTTPTargetConnection>中设置此项。

对于URI的其余部分,您可以使用AssignMessage策略<Path>元素。这是一个例子:

<AssignMessage enabled="true" continueOnError="false" async="false" name="GenerateAuthorizationPayload">
    <FaultRules/>
    <Properties/>
    <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
    <AssignTo createNew="true" type="request"/>
    <Set>
    <Payload contentType="text/xml">
        <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="urn:sample">
           <soapenv:Header/>
           <soapenv:Body>
              <v1:Login/>
           </soapenv:Body>
        </soapenv:Envelope>
    </Payload>
    <Path>/abc/orderid/1234</Path>
    <Verb>POST</Verb>
    </Set>
</AssignMessage>

如果您需要灵活性,您还应该能够在{variable}代码中添加<Path>

这两项政策的结合使您获得动态ip:port/path

答案 1 :(得分:0)

考虑使用目标服务器。它更清洁,它们专为您刚才描述的目的而设计。 this answer中的更多详细信息。