路径包含匹配

时间:2014-01-20 07:09:40

标签: apigee

我想基于包含匹配

执行流程
<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"

3 个答案:

答案 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的正则表达式