Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
Edge te permite invocar un proxy de API desde otro proxy de API. Esta función es útil, especialmente si tienes un proxy de API que contiene código reutilizable que otros proxies de API pueden usar.
Antipatrón
Invocar un proxy de API desde otro mediante HTTPTargetConnection en el extremo objetivo o el código JavaScript personalizado genera un salto de red adicional.
Invoca el proxy 2 desde el proxy 1 mediante HTTPTargetConnection
La siguiente muestra de código invoca el proxy 2 desde el proxy 1 mediante HTTPTargetConnection:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>http://myorg-test.apigee.net/proxy2</URL> </HTTPTargetConnection>
Invoca el proxy 2 desde el proxy 1 del código JavaScript
La siguiente muestra de código invoca el proxy 2 desde el proxy 1 mediante JavaScript:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('http://myorg-test.apigee.net/proxy2); response.waitForComplete();
Flujo de código
Para comprender por qué existe una desventaja inherente, debemos comprender la ruta que realiza una solicitud, como se ilustra en el siguiente diagrama:
Como se muestra en el diagrama, una solicitud recorre varios componentes distribuidos, incluidos el router y el Message Processor.
En las muestras de código anteriores, invocar el proxy 2 desde el proxy 1 significa que la solicitud debe enrutarse a través de la ruta tradicional (es decir, Router > MP) en el entorno de ejecución. Esto sería similar a invocar una API desde un cliente, por lo tanto, realizar varios saltos de red que aumentan la latencia. Estos saltos son innecesarios si se considera que la solicitud del proxy 1 ya "llegó" al MP.
Impacto
La invocación de un proxy de API desde otro proxy de API genera saltos de red innecesarios, es decir que la solicitud debe pasar de un Message Processor a otro Message Processor.
Práctica recomendada
- Usa la característica de encadenamiento de proxy para invocar un proxy de API desde otro. El encadenamiento de proxy es más
eficiente porque usa una conexión local para hacer referencia al extremo de destino (otro proxy de API).
En la muestra de código, se muestra el encadenamiento de proxy mediante LocalTargetConnection en tu definición de extremo:
<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
El proxy de API invocado se ejecuta dentro del mismo Message Processor. Como resultado, se evita el salto de red como se muestra en la siguiente figura:
Figura 2: Flujo de código con encadenamiento de proxy