條件式流程

本頁內容適用於 Apigee 和 Apigee Hybrid。

查看 Apigee Edge 說明文件。

在條件式流程中,只有在流程的條件評估為 true 時,才會執行政策 (與附加至 PreFlow 或 PostFlow 的政策不同,這些政策一律會執行)。本節說明如何建立條件流程。

關於條件式流程

在處理要求和回應期間,每個區隔只會執行一個條件式流程,也就是條件評估結果為 true 的第一個流程。

您可以建立包含 ||(OR) 和 &&(AND) 運算子的條件。不過,根據預設,|| 運算子的優先順序高於 && 運算子。舉例來說,以 A && B || C && D 形式撰寫的條件會評估為 A && (B || C) && D。使用這些運算子時,如要變更優先順序,請務必將運算式加上括號。

下列範例說明條件流程的幾種用法。

範例 1

下列 ProxyEndpoint 定義顯示條件式流程,ProxyEndpoint 會對 API Proxy 的任何 HTTP GET 要求執行該流程:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>
  <Flows>
    <Flow name="Flow-1">
      <Condition>request.verb="GET"</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

請注意,條件會參照 request.verb flow 變數。流程變數是具名的參照,可保存與 Apigee 處理的 API 交易相關聯的狀態資訊。Apigee 定義了許多可供參照的狀態變數。

範例 2

如果服務後端提供天氣報告和天氣預報,API 可能會定義兩個對應至這些 API 資源的條件流程:/reports 和 /forecasts。如果 API 呼叫在網址中包含其中一項資源,條件評估結果就會為 true,並執行附加至條件式流程的邏輯。

應用程式開發人員接著會向以下形式的網址提出要求,存取您的資源:

http://myAPIs.myCo.com/weather/reports

或:

http://myAPIs.myCo.com/weather/forecasts

在 API Proxy 中,您可以定義對應特定資源的條件式流程:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request/>
    <Response/>
  </PreFlow>
  <Flows>
    <Flow name="Flow-1">
      <Condition>(proxy.pathsuffix MatchesPath "/reports")</Condition>
      <Request/>
      <Response/>
    </Flow>
    <Flow name="Flow-2">
      <Condition>(proxy.pathsuffix MatchesPath "/forecasts")</Condition>
      <Request/>
      <Response/>
    </Flow>
  </Flows>
  <PostFlow>
    <Request/>
    <Response/>
  </PostFlow>
  ...
</ProxyEndpoint>

在本例中,您會參照 proxy.pathsuffix 流程變數,其中包含用於存取 API Proxy 的網址尾碼部分。然後為每項資源的條件流程附加不同政策。

範例:建立條件式流程

下一個範例:

  • 建立條件式流程,僅在要求訊息為 HTTP GET 時執行。
  • 將政策新增至新流程。

新增條件式流程

如要新增條件式流程,請按照下列步驟操作:

  1. 在 Proxy 編輯器中選取「Develop」分頁標籤。
  2. 在左側窗格中,依序選取「Proxy endpoints」>「default」。

    在左側窗格中,依序選取「Proxy endpoints」>「default」。

    注意:您可能需要在右側窗格中展開視覺化編輯器,才能看到所有元素。 如要這麼做,請按一下並稍微向下拖曳視覺化編輯器和文字編輯器之間的分隔線。

  3. 點選「Response」窗格上方的「+」按鈕。

    「新增條件式流程」按鈕

  4. 在「Add conditional flow」對話方塊中,選取「Path and verb」,然後在「Path」欄位中,輸入您希望要求路徑包含的路徑後置字串,以便執行條件式流程。請參閱上方的範例 2。

    「新增條件式流程」按鈕

    只有在要求為 GET 要求時,系統才會執行條件式流程 (但不適用於 PUT、POST 等)。

    「Proxy Endpoint」窗格現在會顯示名為 Flow-1 的新流程。

    Proxy 端點中顯示的條件式流程。

  5. 文字編輯器會顯示新條件式流程的 XML 程式碼。

    Proxy 端點中顯示的條件式流程。

您可以視需要編輯「條件」元素。請參閱「在流程中新增邏輯」。

將政策附加至流程

條件流程建立完成後,即可附加政策。下一個範例會在流程中新增配額政策,限制 API Proxy 在一段時間內允許的要求訊息數:

  1. 在左側窗格中,按一下「政策」右側的「+」按鈕。
  2. 在「建立政策」對話方塊中,點選「選取政策類型」欄位,然後向下捲動至「流量管理」,並選取「配額」。
  3. 按一下「建立」建立政策。
  4. 在「Request」窗格中,點選「Flow-1」旁的「+」按鈕。

    在「Request」窗格中,點選「Flow-1」旁的加號按鈕。

  5. 在「Add policy step」對話方塊中,點選「Select existing policy」欄位,然後選取「Quota-1」。
  6. 按一下「新增」。

「Request」窗格現在會顯示流程和附加政策「Quota-1」。

要求窗格,顯示新流程和配額政策。

文字編輯器現在會顯示包含 Quota-1 政策的步驟,位於 XML 的 Flow-1 元素中:

以 XML 顯示的條件式流程和配額政策

完成這項設定後,系統就會對 GET 要求強制執行配額政策。 其他類型的要求不會計入配額政策中的要求數量上限。

後續步驟

如要進一步瞭解如何建構條件和使用變數,請參閱下列主題: