我想基于包含匹配
执行流程<Flow name="do_something_flow">
<Description/>
<Request>
<Step>
<FaultRules/>
<Name>do_something</Name>
</Step>
</Request>
<Response/>
<Condition>request.path MatchesPath "/**/india/blr/**"</Condition>
</Flow>
当请求路径包含 / india / blr 时,应该执行流程
/v1/x1/india/blr/z1
/v1/x1/india/blr
/v1/india/blr
/india/blr
上述路径表达式不适用于第二个和最后一个路径 - 其中URL以子路径开始和结束。 我真正需要的是
request.path contains "/india/blr"
答案 0 :(得分:1)
尝试将条件声明更改为
<Condition>request.path ~ "/india/blr/**"</Condition>
答案 1 :(得分:1)
要捕获所有4个案例,您可以使用:
<Condition>request.path MatchesPath "**/india/blr**"</Condition>
然而,这是一个过于宽泛的,也会匹配这样的路径:
/印度/ blrx / ASD
所以,更确切地说,你可能想要这个:
<Condition>request.path MatchesPath "**/india/blr/**" or request.path MatchesPath "**/india/blr"</Condition>
答案 2 :(得分:0)
在pre-flow中,您可以使用自定义javacallout策略来匹配包含条件的路径。 然后填充变量 在您的流程条件下使用该变量。
这是一个圆形的方式 - 但在apigee路径条件下没有“包含”运算符的情况下工作。
或者,您可以尝试在条件下由apigee支持的JavaRegex。 http://apigee.com/docs/api-services/api/conditions-reference
~~(JavaRegex运算符)匹配符合javax.util.regex的正则表达式