0

我想根据包含匹配执行流程

<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"
4

3 回答 3

1

尝试将您的条件语句更改为

<Condition>request.path ~ "/india/blr/**"</Condition>
于 2014-01-20T08:45:17.217 回答
1

要捕获所有 4 种情况,您可以使用以下命令:

<Condition>request.path MatchesPath "**/india/blr**"</Condition>

然而,这是一个过于宽泛的,也将匹配这样的路径:

/印度/blrx/asd

所以,更准确地说,你可能想要这个:

<Condition>request.path MatchesPath "**/india/blr/**" or request.path MatchesPath "**/india/blr"</Condition>
于 2014-01-20T14:40:20.527 回答
0

在预流程中,您可以使用自定义 javacallout 策略来匹配包含条件的路径。然后填充一个变量 在您的流程条件下使用该变量。

这是一种迂回的方式 - 但在 apigee 路径条件下没有“包含”运算符的情况下工作。

或者,您可以尝试 apigee 在条件下支持的 JavaRegex。http://apigee.com/docs/api-services/api/conditions-reference

~~ (JavaRegex 运算符)匹配符合 javax.util.regex 的正则表达式

于 2014-01-20T08:13:55.783 回答