瞭解路徑

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

路徑會決定從 ProxyEndpoint 到 TargetEndpoint 的要求路徑。路徑中包含的網址會用於存取 API ProxyEndpoint,以及由 TargetEndpoint 定義的後端服務網址。

請觀看這部影片,瞭解 Proxy 端點與目標端點之間的關係。

判斷 API Proxy 端點的網址

下圖顯示從應用程式傳入 ProxyEndpoint 的要求,以及該項要求導向至後端服務:

您在 Edge 中建立 API Proxy 之後,應用程式用於存取 Proxy 的預設網址格式如下:

http://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

https://{org-name}-{env-name}.apigee.net/{base-path}/{resource-path}

其中:

  • {org-name} 是您的機構名稱。在 Edge 上建立帳戶時,系統會建立這個名稱。
  • {env-name} 是邊緣環境名稱。根據預設,在雲端建立的所有 Apigee 機構都是佈建兩個環境:「test」和「prod」。部署 API Proxy 時,您可以選擇部署至其中一個環境,或同時部署至兩個環境。
  • 建立 API Proxy 時,會定義 {base-path}{resource-path}

要求傳入 Edge 時,Edge 會剖析網址,將要求導向正確的 Proxy 端點。舉例來說,下列網址可用於存取 Edge 上的 API Proxy:

http://myOrg-prod.apigee.net/v1/weather/forecastrss

如果您檢查上圖的 API Proxy 的 Proxy 端點定義,則可看到 Edge 如何剖析這個網址:

  1. 網址的網域部分 http://myOrg-prod.apigee.net 對應於 Edge 上的虛擬主機。在上方的 ProxyEndpoint 定義中,API Proxy 使用 <VirtualHost> 標記參照名為 default 的虛擬主機。您可以在環境中定義多個虛擬主機。

    虛擬主機會定義要公開 API Proxy 的網域和通訊埠。虛擬主機也會定義要透過 HTTP 通訊協定或加密 HTTPS 通訊協定存取 API Proxy。如要進一步瞭解虛擬主機,請參閱關於虛擬主機 (Beta 版)
  2. 網址的第二部分 /v1/weather 取決於 Proxy 端點中的 <BasePath> 元素。環境的 API Proxy 基本路徑不得重複,讓兩個 API Proxy 的基本路徑不同。
  3. 網址的第三個部分 /forecastrss 是 API Proxy 定義的資源,與 <Flows> 標記定義的對應條件式流程。

影片:如要進一步瞭解 API Proxy 端點,請觀看短片。

確定目標端點的網址

Proxy 端點定義中的 <RouteRule> 標記會決定 API Proxy 的目標,系統會在處理 ProxyEndpoint 要求的 PreFlow、條件式流程和 PostFlow 中的所有政策之後進行評估。

ProxyEndpoint 可將目標定義為:

  • 後端服務的直接網址。
  • 單一 TargetEndpoint 定義。
  • 多個目標端點,API Proxy 會根據條件將要求委派給目標端點。
  • 空值路徑或目標,代表要求不會轉送至目標。而會在 Edge 上完成要求的所有處理作業及產生回應。

影片:觀看短片,進一步瞭解目標端點。

直接網址

ProxyEndpoint 可直接叫用後端服務,略過任何具名的 TargetEndpoint 設定。舉例來說,下列 <RouteRule> 一律會向 http://api.mycompany.com/myAPI 發出 HTTP 呼叫:

<RouteRule name="default">
  <URL>http://api.mycompany.com/myAPI</URL> 
</RouteRule>

不過,由於沒有 TargetEndpoint,因此您只能將政策新增至 ProxyEndpoint 定義的流程。

單一目標

在單一目標定義中,ProxyEndpoint 會按名稱參照單一 TargetEndpoint 定義,如上圖所示:

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

所有傳送至這個 API Proxy 的要求都會導向相同的 TargetEndpoint 定義。TargetEndpoint 的 <URL> 標記會決定後端服務的位置。在上圖中,目標網址為 http://weather.yahooapis.com

條件式目標

<RouteRule> 標記可讓您根據條件,將要求導向目標。您可以使用流程變數、查詢參數、HTTP 標頭、訊息內容,或是時段和語言代碼等情境資訊來判定目標端點。舉例來說,您可以在要求網址中加入地理區域,例如美國和英國。然後,您可以依據區域將要求轉送至目標端點。

以下轉送規則會評估要求中的 HTTP 標頭。如果 HTTP 標頭 routeTo 的值為 TargetEndpoint1,則要求會轉送至名為 TargetEndpoint1 的 TargetEndpoint。如果沒有,則要求會轉送至 TargetEndpoint2。

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
 <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

如果您有多個轉送規則,請將其建立為「預設」,也就是沒有條件的轉送規則。請確保預設轉送規則是在條件式路徑清單的最後一個定義,因為規則會在 ProxyEndpoint 的由上而下評估。

另請參閱條件路徑條件參考資料

影片:請觀看短片,瞭解如何使用條件目標轉送至目標端點。

空值路線

空值路徑支援不需要將要求訊息轉送至 TargetEndpoint 的情況。當 ProxyEndpoint 執行所有必要的處理作業時 (例如透過 JavaScript 呼叫外部服務),這項功能就能派上用場。

以下範例將定義空值路徑:

<RouteRule name="GoNowhere"/>

瞭解詳情