我刚刚开始与Apigee合作。 我想创建一个API代理,它将根据'if'条件调用两个目标端点。 我已经创建了一个API并为其添加了资源,但问题是在这种情况下我得到了两个API。 如果type ='abc'目标点应为target1 如果thetype ='xyz'目标点应该是target2 有人可以告诉我如何继续吗?
答案 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代理编辑器工具栏中选择新建 / 新资源。
然后你会看到这个:
(2)对于输入字段可选目标URL ,输入与该资源对应的目标URL。
然后,该工具将为该资源生成两个条件流,您可以选择附加特定于资源的策略。
此工具还将添加所需的路由规则,您生成的XML将如下所示:
<ProxyEndpoint name="default">
<RouteRule name="Resource-1">
<Condition>(proxy.pathsuffix MatchesPath "/someResource") and (request.verb = "GET")</Condition>
<HTTPTargetConnection>
<URL>http://myAlternateEndpoint</URL>
</HTTPTargetConnection>
</RouteRule>
....