查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
Edge 可讓您從另一個 API Proxy 叫用一個 API Proxy。這項功能在 您的 API Proxy 包含可重複使用的程式碼,可由其他 API Proxy 使用。
反模式
透過目標端點中的 HTTPTargetConnection 從另一個 API Proxy 叫用一個 API Proxy,或 自訂 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 後,要求必須轉送 傳輸至傳統路徑 (例如路由器 > MP)。這與叫用 API 產生多個網路躍點,藉此增加延遲。這些躍點 不考慮 Proxy 1 要求已「達到」決定性如何
影響
從其他 API Proxy 叫用一個 API Proxy 會產生不必要的網路躍點,也就是 要求都必須從某個訊息處理器傳遞給另一個訊息處理器。
最佳做法
- 使用 Proxy 鏈結
功能可讓您從另一個 API Proxy 叫用一個 API ProxyProxy 鏈結
是很有效率的,因為它使用本機連線來參照目標端點 (另一個 API Proxy)。
這個程式碼範例顯示了在端點中使用 LocalTargetConnection 的 Proxy 鏈結 定義:
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
叫用的 API Proxy 會在同一個訊息處理器中執行。因此可避免 以及網路躍點,如下圖所示: