設定流程

您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件
資訊

資料流是 API Proxy 的基本構成要素。資料流可讓您設定 API Proxy 執行政策與程式碼的順序,藉此編寫 API 的行為。

如需流程的概念總覽,請參閱控管 Proxy 透過資料流執行的方式

本主題說明如何建立條件式流程,以及如何為高階資料流新增邏輯 (政策)。建立條件的技巧比本主題提到的更多。詳情請參閱流程變數總覽含有流程變數的條件

將政策附加至資料流

Edge 提供許多不同類型的預先定義的政策,可讓您實作安全性、管理流量及操控訊息。此外,政策還可讓您新增自己的自訂程式碼,完全自訂訊息處理作業。

例如:

  • OAuth 安全性政策附加至 ProxyEndpoint 的要求 PreFlow。由於 ProxyEndpoint 的要求 PreFlow 是管道的第一個流程,因此如果要求違反安全性政策,您可以立即拒絕要求。
  • JSON 轉換為 XML 轉換政策至 TargetEndpoint 的回應 PostFlow,以便將回應從 JSON 轉換為 XML。
  • JavaScript 政策附加至 JavaScript ,以執行 JavaScript 程式碼來處理要求

建立條件式流程後,即可附加政策。選取流程後,按一下要求或回應圖表中的「+ 步驟」圖示,將新的或現有政策新增至流程。

在「導覽器」選單中,以方框特別標出已命名的條件流程範例,「Flow」窗格中則顯示「Step」按鈕。

在「Add Step」窗格中,系統會建立新的政策執行個體,並將政策類型設為「配額」和「顯示名稱 2」。

將政策附加至所選流程,即可設定 API Proxy,只針對對該流程 URI 和動詞組合提出的要求,強制執行配額政策。舉例來說,如果您將政策附加至要求中的 learn 流程,則 Proxy 編輯器的程式碼檢視會產生下列 XML:

<ProxyEndpoint name="default">
...
   <Flow name="issue">
        <Description/>
        <Request>
            <Step>
                <Name>Quota-2</Name>
            </Step>
        </Request>
        <Response/>
        <Condition>(proxy.pathsuffix MatchesPath "/issue/**") and (request.verb = "GET")</Condition>
    </Flow>
... 
</ProxyEndpoint>

在這項設定中,如果 GET 要求傳入 API Proxy,且 URI 模式為 .../issue/** (/issue/ 在最後一個正斜線後方的任何 URI) 中,系統會對該 API 呼叫強制執行配額。

條件式流程簡介

系統一律會執行 PreFlow 或 PostFlow 附加的所有政策。不過,只有在資料流的條件評估結果為 true 時,系統才會執行條件式流程中的政策。

處理要求和回應時,每個區隔只會執行一個條件式流程,也就是條件評估結果為 true 的第一個流程。這表示您可以在下列各個步驟中,執行一個條件式流程:

  • ProxyEndpoint 的要求管道
  • TargetEndpoint 的要求管道
  • ProxyEndpoint 的回應管道
  • TargetEndpoint 的回應管道

影片:觀看短片,進一步瞭解條件式流程。

舉例來說,下列 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 流程變數。流程變數已命名的參照,會保留與 Edge 處理的 API 交易相關聯的狀態資訊。Edge 會定義許多可參照的狀態變數。

符合 REST 樣式的服務是一系列 API 資源。API 資源是一個 URI 路徑片段,用於識別開發人員可透過呼叫 API 存取的部分實體。舉例來說,如果您的服務後端提供天氣預報和天氣預報,您的 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 時才會執行的流程。

如要新增條件式流程,請在 API Proxy 建構工具中選取「開發」分頁標籤。

Proxy 建構工具的「開發」分頁

請按一下所需端點中的「+」圖示

新增條件式流程按鈕

「新增條件式流程」表單可讓您為流程命名並設定條件。在以下範例中,您在基本路徑之後新增一個簡單的條件,以便評估任何 URI 中 GET 動詞的要求訊息 HTTP (與 PUTPOST 等不同)。

在「New Conditional Flow」窗格中,流程名稱為「Flow-1」,且條件類型、路徑和動詞已設定完成。

(瞭解如何在「流程變數和條件」中建構條件陳述式)。

名為「Flow-1」Flow-1的新流程現在會顯示在「Navigator」選單中。

以 Flow-1 醒目顯示

現在請觀察 ProxyEndpoint 的 XML 設定。選取「Navigator」Flow-1選單中的「Flow-1」Flow-1

畫面會顯示以下設定。

<PreFlow name="PreFlow">
    <Request/>
    <Response/>
</PreFlow>   
<Flows>
    <Flow name="Flow-1">
      <Request/>
      <Response/>
      <Condition>(proxy.pathsuffix MatchesPath "/**") and (request.verb = "GET")</Condition>
    </Flow>
</Flows>
<PostFlow name="PostFlow">
    <Request/>
    <Response/>
</PostFlow>

後續步驟

下列主題詳細說明瞭建構條件及使用變數: