您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
Edge 可讓您從一個 API Proxy 叫用另一個 API Proxy。如果您有包含可重複使用程式碼的 API Proxy,且其他 API Proxy 也能使用這些程式碼,這項功能就特別實用。
反模式
從另一個 API Proxy 叫用一個 API Proxy 時,無論是使用目標端點中的 HTTPTargetConnection,還是自訂 JavaScript 程式碼,都會導致額外的網路躍點。
使用 HTTPTargetConnection 從 Proxy 1 叫用 Proxy 2
下列程式碼範例會使用 HTTPTargetConnection,從 Proxy 1 叫用 Proxy 2:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>http://myorg-test.apigee.net/proxy2</URL> </HTTPTargetConnection>
從 JavaScript 程式碼叫用 Proxy 1 中的 Proxy 2
下一個程式碼範例會使用 JavaScript 從 Proxy 1 叫用 Proxy 2:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('http://myorg-test.apigee.net/proxy2); response.waitForComplete();
代碼流程
如要瞭解這項做法為何有先天上的缺點,請參閱下圖,瞭解要求採取的路徑:
如圖所示,要求會經過多個分散式元件,包括路由器和訊息處理器。
在上述程式碼範例中,從 Proxy 1 叫用 Proxy 2,表示要求必須在執行階段透過傳統路徑 (即 Router > MP) 轉送。這類似於從用戶端叫用 API,因此會產生多個網路躍點,進而增加延遲。考量到 Proxy 1 要求已「送達」MP,這些躍點並無必要。
影響
從一個 API Proxy 叫用另一個 API Proxy 會導致不必要的網路躍點,也就是要求必須從一個訊息處理器傳遞至另一個訊息處理器。
最佳做法
- 使用Proxy 鏈結功能,從一個 API Proxy 呼叫另一個 API Proxy。Proxy 鏈結會使用本機連線參照目標端點 (另一個 API Proxy),因此效率更高。
程式碼範例會在端點定義中,使用 LocalTargetConnection 顯示 Proxy 鏈結:
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
叫用的 API Proxy 會在同一個訊息處理器中執行,因此可避免網路躍點,如下圖所示:
圖 2:使用 Proxy Chaining 的程式碼流程