Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen.
Mit Apigee können Sie API-Proxys von anderen API-Proxys aufrufen. Diese Funktion ist besonders nützlich, wenn ein API-Proxy wiederverwendbaren Code enthält, der von anderen API-Proxys genutzt werden kann.
Anti-Pattern
Wird ein API-Proxy von einem anderen aufgerufen, entweder mit HTTPTargetConnection
im Zielendpunkt oder über benutzerdefinierten JavaScript-Code, wird zusätzlicher Netzwerk-Hop verursacht.
Proxy 2 von Proxy 1 mit HTTPTargetConnection
aufrufen
Folgendes Codebeispiel ruft Proxy 2 von Proxy 1 über HTTPTargetConnection
auf:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>https://api-test.example.com/proxy2</URL> </HTTPTargetConnection>
Proxy 2 von Proxy 1 vom JavaScript-Code aufrufen
Im nächsten Codebeispiel wird Proxy 2 von Proxy 1 mit JavaScript aufgerufen:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('https://api-test.example.com/proxy2); response.waitForComplete();
Codeablauf
Um zu verstehen, warum dies einen inhärenten Nachteil hat, müssen wir die Route verstehen, die Anfragen nehmen (im folgenden Diagramm dargestellt):
Wie im Diagramm dargestellt, durchläuft eine Anfrage mehrere verteilte Komponenten, darunter Router und Nachrichtenprozessor.
In den obigen Codebeispielen führt der Aufruf von Proxy 2 von Proxy 1 dazu, dass die Anfrage zur Laufzeit über die herkömmliche Route (Router > MP) geleitet werden muss. Dies ist vergleichbar mit dem Aufruf einer API durch einen Client, wodurch mehrere Netzwerk-Hops entstehen, die die Latenz erhöhen. Diese Hops sind nicht erforderlich, da die Proxy 1-Anfrage die MP-Datei bereits erreicht hat.
Auswirkungen
Wird ein API-Proxy von einem anderen API-Proxy aufgerufen, so bedingt dies unnötige Netzwerk-Hops. Die Anfrage muss also von einem Message Processor an einen anderen Message Processor weitergeleitet werden.
Best Practice
- Verwenden Sie das Feature zur Proxy-Verkettung, um einen API-Proxy von einem anderen aufzurufen. Die Proxy-Verkettung ist effizienter, da sie eine lokale Verbindung zum Verweis auf den Zielendpunkt (einen anderen API-Proxy) verwendet.
Das Codebeispiel zeigt die Proxy-Verkettung mit
LocalTargetConnection
in der Endpunktdefinition:<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
Der aufgerufene API-Proxy wird innerhalb desselben Message Processor ausgeführt. Infolgedessen wird der Netzwerk-Hop vermieden, wie in der folgenden Abbildung dargestellt: