一个API代理调用两个不同的目标端点

时间:2014-04-01 11:06:04

标签: apigee

我刚刚开始与Apigee合作。 我想创建一个API代理,它将根据'if'条件调用两个目标端点。 我已经创建了一个API并为其添加了资源,但问题是在这种情况下我得到了两个API。 如果type ='abc'目标点应为target1 如果thetype ='xyz'目标点应该是target2 有人可以告诉我如何继续吗?

2 个答案:

答案 0 :(得分:3)

查看this question的答案。此处列出了查找RouteRules的详细信息。 ProxyEndpoint documentation也会有所帮助。

您可以使用此代码完成您尝试的操作:

<RouteRule name="routeToTarget1">
    <Condition>thetype == "abc"</Condition>
    <TargetEndpoint>target1</TargetEndpoint>
</RouteRule>
<RouteRule name="routeToTarget2">
    <Condition>thetype == "xyz"</Condition>
    <TargetEndpoint>target2</TargetEndpoint>
</RouteRule>

将按顺序评估这些RouteRules。

请注意,您可能希望底部RouteRule没有条件,这意味着它将始终匹配。当type不等于“abc”或“xyz”时会发生什么?假设target1是默认值,您的代码将如下所示:

<RouteRule name="routeToTarget2">
    <Condition>thetype == "xyz"</Condition>
    <TargetEndpoint>target2</TargetEndpoint>
</RouteRule>
<RouteRule name="routeToTarget1">
    <TargetEndpoint>target1</TargetEndpoint>
</RouteRule>

答案 1 :(得分:0)

如果您使用的是API代理编辑器UI,则可以执行以下操作:

(1)从API代理编辑器工具栏中选择新建 / 新资源

然后你会看到这个: enter image description here

(2)对于输入字段可选目标URL ,输入与该资源对应的目标URL。

然后,该工具将为该资源生成两个条件流,您可以选择附加特定于资源的策略。

此工具还将添加所需的路由规则,您生成的XML将如下所示:

<ProxyEndpoint name="default">
    <RouteRule name="Resource-1">
        <Condition>(proxy.pathsuffix MatchesPath &quot;/someResource&quot;) and (request.verb = &quot;GET&quot;)</Condition>
        <HTTPTargetConnection>
            <URL>http://myAlternateEndpoint</URL>
        </HTTPTargetConnection>
    </RouteRule>
    ....