Stai
visualizzando la documentazione di Apigee X.
Visualizza la documentazione di Apigee Edge.
Apigee 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 nel codice JavaScript personalizzato genera un hop di rete aggiuntivo.
Richiama proxy 2 da proxy 1 utilizzando HTTPTargetConnection
L'esempio di codice riportato di seguito richiama il proxy 2 dal proxy 1 tramite HTTPTargetConnection
:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>https://api-test.example.com/proxy2</URL> </HTTPTargetConnection>
Richiama proxy 2 da proxy 1 dal codice JavaScript
L'esempio di codice successivo richiama il proxy 2 dal proxy 1 tramite JavaScript:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('https://api-test.example.com/proxy2); response.waitForComplete();
Flusso codice
Per comprendere perché presenta uno svantaggio intrinseco, dobbiamo capire il percorso seguito da una richiesta, come illustrato dal diagramma seguente:

Come mostrato nel diagramma, una richiesta attraversa più componenti distribuiti, tra cui il Router e il processore di messaggi.
Negli esempi di codice precedenti, richiamare il proxy 2 dal proxy 1 significa che la richiesta deve essere instradata attraverso la route tradizionale (Router > MP) in fase di runtime. Ciò equivale a richiamare un'API da un client, effettuando così più hop di rete che aumentano la latenza. Questi hop non sono necessari, considerando che la richiesta proxy 1 ha già raggiunto il MP.
Impatto
Se richiami un proxy API da un altro proxy API si verificano hop di rete non necessari, ovvero la richiesta deve essere trasferita da un elaboratore di messaggi a un altro.
Best practice
- Utilizza la funzionalità di catena del proxy per richiamare un proxy API da un altro. La concatenazione del proxy è più efficiente, poiché utilizza la connessione locale per fare riferimento all'endpoint di destinazione (un altro proxy API).
L'esempio di codice mostra la catena del proxy utilizzando
LocalTargetConnection
nella definizione dell'endpoint:<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
Il proxy API richiamato viene eseguito all'interno dello stesso processore di messaggi; di conseguenza, evita l'hop di rete come mostrato nella figura che segue:
Figura 2: flusso di codice con concatenazione di proxy