您目前查看的是 Apigee 和 Apigee Hybrid 說明文件。
查看
Apigee Edge 說明文件。
Apigee 可讓您從一個 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>https://api-test.example.com/proxy2</URL> </HTTPTargetConnection>
從 JavaScript 程式碼叫用 Proxy 1 中的 Proxy 2
下一個程式碼範例會使用 JavaScript,從 Proxy 1 叫用 Proxy 2:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('https://api-test.example.com/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 會在同一個訊息處理器中執行,因此可避免網路躍點,如下圖所示:
圖 2:使用 Proxy 鏈結的程式碼流程