这可能是一个不寻常的情况,因为我试图在API代理中定义新的代理端点。
我们假设我有一个default
代理端点,其条件流符合/myflow
和action == GET
,并且可以正常工作。
然后我使用自己的条件流定义了一个新的代理端点(new_endpoint
)来匹配/mynewflow
和action == 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
代理端点?
答案 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
不同,就会按照我预期的方式开始路由。