定义多个代理端点

时间:2014-05-06 04:23:02

标签: apigee

这可能是一个不寻常的情况,因为我试图在API代理中定义新的代理端点。

我们假设我有一个default代理端点,其条件流符合/myflowaction == GET,并且可以正常工作。

然后我使用自己的条件流定义了一个新的代理端点(new_endpoint)来匹配/mynewflowaction == GET

/mynewflow工作正常,按预期转到new_endpoint

然而

/myflow 现在转到new_endpoint! (我使用了Trace工具并确认了它。)

以下是两者的HTTP代理连接设置:

<HTTPProxyConnection>
    <BasePath>/v2</BasePath>
    <Properties/>
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
<RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

这是预期的吗?如果是,我如何确保/myflow路由到default代理端点?

2 个答案:

答案 0 :(得分:2)

您似乎错过了&lt; RouteRule&gt;在你的代理中。就像ConditionalFlow一样,你需要第二个RouteRule来指向你的新目标,它看起来像这样:

<HTTPProxyConnection>
    <BasePath>/v2</BasePath>
    <Properties/>
    <VirtualHost>default</VirtualHost>
    <VirtualHost>secure</VirtualHost>
</HTTPProxyConnection>
<RouteRule name="new_endpoint">
    <TargetEndpoint>new_endpoint</TargetEndpoint>
    <Condition>(proxy.pathsuffix MatchesPath "/mynewflow")</Condition>
</RouteRule>
<RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

您不需要包含单个动词,因为我们可以假设/ mynewflow将转到new_endpoint目标。

另外,请确保将条件RouteRule置于默认RouteRule之上 - Apigee将匹配第一个,因此如果默认(无条件)是第一个,则永远不会匹配剩余规则的条件。

答案 1 :(得分:1)

我今天学到了一些东西:显然它HttpProxyConnection/BasePath指示选择了哪个代理端点

只要确保两个端点的BasePath不同,就会按照我预期的方式开始路由。