本頁適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
路徑會決定從 ProxyEndpoint
到 TargetEndpoint
的要求路徑。路徑中包含用於存取 API ProxyEndpoint
的網址,以及 TargetEndpoint
定義的後端服務網址。
請觀看這部影片,瞭解路徑的介紹,以及 ProxyEndpoint
和 TargetEndpoint
之間的關係。
判斷 API Proxy 端點的網址
下圖顯示從應用程式傳入 ProxyEndpoint
的要求,以及要求會導向後端服務:
在 Apigee 上建立 API Proxy 後,應用程式用來存取 Proxy 的預設網址會採用以下格式:
https://www.example.com/shopping/cart/addItem |_____________| |___________| |_____| | | | hostname basepath resource
其中:
- 主機名稱可以是您已新增至 DNS 的網域,也可以是 IP 位址。
- 建立 API Proxy 時,系統會定義基本路徑和資源路徑。
當 Apigee 收到要求時,Apigee 會剖析網址,將要求導向正確的 ProxyEndpoint
。舉例來說,下列網址可用於存取 API Proxy:
http://example.com/v1/weather/forecastrss
如要查看上圖中 API Proxy 的 ProxyEndpoint
定義,可以瞭解這個網址的剖析方式:
- 網址的網域部分
http://example.com
會對應至環境群組中定義的主機名稱。已將 Proxy 部署至該環境群組中一或多個環境。詳情請參閱「關於環境和環境群組」。 - 網址的第二部分
/v1/weather
是由ProxyEndpoint
中的<BasePath>
元素決定。您在建立 Proxy 時已定義基礎路徑。基本路徑必須是環境 API Proxy 的專屬路徑,以免同一個環境中的兩個 API Proxy 有相同的基本路徑。 - URL 的第三部分
/forecastrss
是 API 代理程式定義的資源,其中包含<Flows>
元素定義的對應條件式流程。
影片:觀看短片,進一步瞭解 API Proxy 端點。
判斷目標端點的網址
ProxyEndpoint
定義中的 <RouteRule>
元素會決定 API 代理程式的目標,並在 ProxyEndpoint
要求的 PreFlow、ConditionalFlow 和 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"/>