Stai visualizzando la documentazione di Apigee Edge.
Consulta la
documentazione di Apigee X. info
Edge ti consente di richiamare un proxy API da un altro proxy API. Questa funzionalità è utile soprattutto se hai un proxy API che contiene codice riutilizzabile che può essere utilizzato da altri proxy API.
Antipattern
La chiamata di un proxy API da un altro utilizzando HTTPTargetConnection nell'endpoint di destinazione o codice JavaScript personalizzato comporta un hop di rete aggiuntivo.
Richiamare il proxy 2 dal proxy 1 utilizzando HTTPTargetConnection
Il seguente esempio di codice richiama il proxy 2 dal proxy 1 utilizzando HTTPTargetConnection:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>http://myorg-test.apigee.net/proxy2</URL> </HTTPTargetConnection>
Richiamare il proxy 2 dal proxy 1 dal codice JavaScript
Il seguente esempio di codice richiama il proxy 2 dal proxy 1 utilizzando JavaScript:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('http://myorg-test.apigee.net/proxy2); response.waitForComplete();
Flusso codice
Per capire perché questo approccio presenta uno svantaggio intrinseco, dobbiamo comprendere il percorso di una richiesta, come illustrato nel diagramma seguente:
Come illustrato nel diagramma, una richiesta attraversa più componenti distribuiti, tra cui il router e il processore di messaggi.
Nei codici di esempio riportati sopra, la chiamata del proxy 2 dal proxy 1 significa che la richiesta deve essere instradata tramite il percorso tradizionale (ovvero router > MP) in fase di runtime. Questo approccio è simile alla chiamata di un'API da un client, con conseguenti hop di rete multipli che aumentano la latenza. Questi hop non sono necessari, dato che la richiesta del proxy 1 ha già "raggiunto" l'MP.
Impatto
La chiamata di un proxy API da un altro proxy API comporta hop di rete non necessari, ovvero la richiesta deve essere trasmessa da un processore di messaggi a un altro processore di messaggi.
Best practice
- Utilizza la funzionalità di concatenamento dei proxy
per chiamare un proxy API da un altro. Il concatenamento dei proxy è più
efficiente perché utilizza la connessione locale per fare riferimento all'endpoint di destinazione (un altro proxy API).
L'esempio di codice mostra il concatenamento dei proxy utilizzando LocalTargetConnection nella definizione dell'endpoint definition:
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
Il proxy API chiamato viene eseguito nello stesso processore di messaggi; di conseguenza, evita l'hop di rete, come mostrato nella figura seguente:
Figura 2: flusso di codice con concatenamento dei proxy