您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
流程是 API Proxy 的基本建構區塊。您可以透過流程設定 API Proxy 執行政策和程式碼的順序,藉此設定 API 的運作方式。
如需流程的概念總覽,請參閱「使用流程控管 Proxy 的執行方式」。
本主題將從高層次說明如何建立條件流程,以及在流程中新增邏輯 (政策)。建立條件的技巧比本主題涵蓋的內容更深入。如需詳細資料,請參閱「流程變數總覽」和「含有流程變數的條件」。
將政策附加至流程
Edge 內建多種預先定義的政策,可供您實作安全性、管理流量及操控訊息。此外,您也可以透過政策新增自訂程式碼,全面自訂訊息處理程序。
例如:
- 將 OAuth 安全性政策附加至 ProxyEndpoint 的要求 PreFlow。由於 ProxyEndpoint 的要求 PreFlow 是管道中的第一個流程,因此如果要求違反安全性政策,您可以立即拒絕。
- 將 JSON 轉 XML 轉換政策附加至 TargetEndpoint 的回應 PostFlow,將 JSON 回應轉換為 XML。
- 將 JavaScript 政策附加至 ProxyEndpoint 的條件流程,執行 JavaScript 程式碼來處理要求
建立條件式流程後,即可附加至政策。選取流程後,按一下要求或回應圖表中的「+ Step」圖示,即可在流程中新增或加入現有政策。


將政策附加至所選流程後,您即可設定 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>在這個設定中,如果 API 代理伺服器收到 URI 模式為 .../issue/** 的 GET 要求 (URI 中 /issue/ 後方有任何內容,且最後一個正斜線後方有任何內容),系統就會對該 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 flow 變數。流程變數是具名的參照,可保存與 Edge 處理的 API 交易相關聯的狀態資訊。Edge 定義了許多可供參照的狀態變數。
RESTful 服務是 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 建構工具中選取「Develop」分頁標籤。

在所需端點中,按一下「+」圖示。

您可以在「New Conditional Flow」(新增條件式流程) 表單中命名流程,並設定條件。在下列範例中,您會新增簡單條件,評估要求訊息的 HTTP,判斷是否為基本路徑後任何 URI 上的 GET 動詞 (而非 PUT、POST 等)。

(瞭解如何在 Flow 變數和條件中建構條件式陳述式)。
新的流程 (名為「Flow-1」Flow-1) 現在會顯示在「導覽器」選單中。

現在請觀察 ProxyEndpoint 的 XML 設定。在「Navigator」選單中選取「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>後續步驟
如要進一步瞭解如何建構條件和使用變數,請參閱下列主題: