2014-01-20 129 views
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> 

曾經請求路徑中包含/印度/ BLR例如

/v1/x1/india/blr/z1 
/v1/x1/india/blr 
/v1/india/blr 
/india/blr 

當流量應該執行上述路徑表達式不適用於第二個和最後一個路徑 - 其中URL以子路徑開始和結束。 我真正需要的是

request.path contains "/india/blr" 

回答

0

在預流,你可以有一個自定義javacallout政策,以配合含有條件的路徑。 然後填充變量 在您的流程條件中使用該變量。

這是一個繞路的過程 - 但在apigee路徑條件下沒有「contains」操作符。

或者,您可以嘗試在條件中由apigee支持的JavaRegex。 http://apigee.com/docs/api-services/api/conditions-reference

~~(JavaRegex運營商)匹配一個javax.util.regex兼容的正則表達式

+0

Java的正則表達式的工作 – Srikanth

1

試着改變你的條件語句

<Condition>request.path ~ "/india/blr/**"</Condition> 
1

要捕獲所有4例,您可以使用此:

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

然而,這是一個過於寬泛,並且還將匹配的路徑是這樣的:

/印度/ blrx/ASD

所以,更確切地說,你可能希望這樣的:

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

類似於Java的正則表達式:-)整齊黑客 – Srikanth