您正在查看 Apigee Edge 說明文件。
查看 Apigee X 說明文件。 資訊
Edge 可讓您從另一個 API Proxy 叫用一個 API Proxy。如果您的 API Proxy 包含其他 API Proxy 可使用的程式碼,就特別實用。
反模式
透過在目標端點中的 HTTPTargetConnection 或自訂 JavaScript 程式碼,從另一個 API Proxy 叫用其他 API Proxy 會產生額外的網路躍點。
使用 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 代表要求必須在執行階段透過傳統路徑 (即路由器 > 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 會在相同的訊息處理器中執行,因此會避免使用網路躍點 (如下圖所示):