瞭解路徑

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

查看 Apigee Edge 說明文件。

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

觀看這部影片,瞭解路徑簡介,以及「ProxyEndpoint」和「TargetEndpoint」之間的關係。

判斷 API Proxy 端點的網址

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

HTTP 用戶端要求會透過 Apigee 上的 API Proxy 傳送至 HTTP 服務,然後回應會透過 API Proxy 傳回給用戶端。

在 Apigee 上建立 API Proxy 後,應用程式用來存取 Proxy 的預設網址格式如下:

https://www.example.com/shopping/cart/addItem
        |_____________| |___________| |_____|
               |             |           |
            hostname      basepath     resource

其中:

  • 主機名稱可以是您已新增至 DNS 的網域,也可以是 IP 位址。
  • 建立 API Proxy 時,系統會定義基本路徑和資源路徑。

Apigee 收到要求後,會剖析網址,將要求導向正確的 ProxyEndpoint。舉例來說,下列網址可用來存取 API Proxy:

http://example.com/v1/weather/forecastrss

如果您檢查上圖中 API Proxy 的 ProxyEndpoint 定義,會發現這個網址的剖析方式如下:

  1. 網址的網域部分 (http://example.com) 對應於環境群組中定義的主機名稱。該 Proxy 已部署至該環境群組內的一或多個環境。詳情請參閱「關於環境和環境群組」。
  2. 網址的第二部分 /v1/weather 是由 ProxyEndpoint 中的 <BasePath> 元素決定。建立 Proxy 時,您已定義基本路徑。環境的 API Proxy 必須有專屬的基準路徑,因此同一環境中的兩個 API Proxy 不得有相同的基準路徑。
  3. 網址的第三部分 /forecastrss 是由 API Proxy 定義的資源,以及由 <Flows> 元素定義的對應條件流程。

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

判斷目標端點的網址

ProxyEndpoint 定義中的 <RouteRule> 元素會決定 API Proxy 的目標,並在處理完 ProxyEndpoint 要求 PreFlow、條件流程和 PostFlow 中的所有政策後進行評估。

ProxyEndpoint 可將目標定義為:

  • 後端服務的直接網址。
  • 單一 TargetEndpoint 定義。
  • 多個 TargetEndpoint,API Proxy 會根據條件將要求委派給目標端點。
  • 空值路徑或目標,表示要求不會轉送至目標。而是由 Apigee 處理要求並產生回應。

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

直接網址

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

<RouteRule name="default">
  <URL>http://example.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"/>

瞭解詳情