您正在查看 Apigee Edge 說明文件。
參閱 Apigee X說明文件。 資訊
路徑會決定 ProxyEndpoint 到 TargetEndpoint 之間的要求路徑。路徑中包含用於存取 API ProxyEndpoint 的網址,以及由 TargetEndpoint 定義的後端服務網址。
請觀看這部影片,瞭解路由的簡介,以及 ProxyEndpoint 和 TargetEndpoint 之間的關係。
判斷 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 時,您可以選擇將其部署至一個或兩個環境。
- {base-path} 和 {resource-path} 是在建立 API Proxy 時定義。
當 Edge 收到要求時,Edge 會剖析網址,將要求導向正確的 ProxyEndpoint。舉例來說,下列網址可用於存取 Edge 上的 API Proxy:
http://myOrg-prod.apigee.net/v1/weather/forecastrss
如要查看上圖中 API proxy 的 ProxyEndpoint 定義,您可以瞭解 Edge 如何剖析這個網址:
- 網址的網域部分 http://myOrg-prod.apigee.net 對應至 Edge 上的虛擬主機。在上方的 ProxyEndpoint 定義中,API Proxy 使用 <VirtualHost> 標記參照名為 default 的虛擬主機。您可以在環境中定義多個虛擬主機。
虛擬主機會定義 API Proxy 公開的網域和通訊埠。虛擬主機也會定義要使用 HTTP 通訊協定還是加密的 HTTPS 通訊協定存取 API Proxy。如要進一步瞭解虛擬主機,請參閱「關於虛擬主機 (Beta 版)」一文。 - 網址的第二部分 (/v1/weather) 取決於 ProxyEndpoint 中的 <BasePath> 元素。環境的 API Proxy 基礎路徑不得重複,以免兩個 API Proxy 有相同的基本路徑。
- 網址的第三個部分 /forecastrss,是 API Proxy 定義的資源,其中包含由 <Flows> 標記定義的對應條件流程。
影片:觀看短片,進一步瞭解 API Proxy 端點。
判斷目標端點的網址
ProxyEndpoint 定義中的 <RouteRule> 標記會決定 API Proxy 的目標,並在 ProxyEndpoint 要求的 PreFlow、ConditionalFlow 和 PostFlow 中的所有政策處理完畢後評估。
ProxyEndpoint 可以將目標定義為:
- 導向後端服務的直接網址。
- 單一 TargetEndpoint 定義。
- 多個 TargetEndpoints,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"/>