我有一个API代理,有两个流,一个返回模式“/ items / {itemId}”之后的项目的详细信息,另一个返回模式后的另一个:/items
<Flows>
<Flow name="Items by Id">
<Condition>((proxy.pathsuffix MatchesPath "/{Items}") ) and (request.verb = "GET")</Condition>
</Flow>
<Flow name="List of Episodes">
<Condition>(proxy.pathsuffix MatchesPath "/") and (request.verb = "GET")</Condition>
</Flow>
现在,我想支持尾随/
到两个端点,这是我面临的问题。当我尝试通过/
/Items/
调用来调用API时,Apigee认为它是/Items/{itemId}
Items = ""
,因此会重定向并执行不同的流程。
请告知如何解决这个问题。
答案 0 :(得分:1)
只需在流程中添加另一行即可捕获两者:
<Flows>
<Flow name="Items list">
<Condition>((proxy.pathsuffix MatchesPath '/Items') or (proxy.pathsuffix MatchesPath '/Items/') and (request.verb = 'GET')</Condition>
</Flow>
<Flow name="Items by Id">
<Condition>((proxy.pathsuffix MatchesPath '/items/{itemId}')) and (request.verb = 'GET')</Condition>
</Flow>
<Flows>
或者,如果你真的很聪明,你可以使用'或'将它们添加到同一个条件行。