Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de
Apigee Edge.
Apigee te permite invocar un proxy de API desde otro proxy de API. Esta función es especialmente útil si tienes un proxy de API que contiene código reutilizable que pueden usar otros proxies de API.
Antipatrón
Si invocas un proxy de API desde otro mediante HTTPTargetConnection
en el endpoint de destino o con código JavaScript personalizado, se producirá un salto de red adicional.
Invocar el proxy 2 desde el proxy 1 mediante HTTPTargetConnection
El siguiente código de ejemplo invoca el proxy 2 desde el proxy 1 mediante HTTPTargetConnection
:
<!-- /antipatterns/examples/2-1.xml --> <HTTPTargetConnection> <URL>https://api-test.example.com/proxy2</URL> </HTTPTargetConnection>
Invocar el proxy 2 desde el proxy 1 mediante código JavaScript
En el siguiente ejemplo de código se invoca el proxy 2 desde el proxy 1 mediante JavaScript:
<!-- /antipatterns/examples/2-2.xml --> var response = httpClient.send('https://api-test.example.com/proxy2); response.waitForComplete();
Flujo de código
Para entender por qué esto supone una desventaja inherente, debemos comprender la ruta que sigue una solicitud, tal como se muestra en el diagrama siguiente:

Como se muestra en el diagrama, una solicitud atraviesa varios componentes distribuidos, incluidos el enrutador y el procesador de mensajes.
En los ejemplos de código anteriores, invocar el proxy 2 desde el proxy 1 significa que la solicitud se tiene que enrutar a través de la ruta tradicional (Router > MP) en el tiempo de ejecución. Sería como invocar una API desde un cliente, lo que provocaría varios saltos de red que aumentarían la latencia. Estos saltos no son necesarios, ya que la solicitud del proxy 1 ya ha llegado al MP.
Impacto
Invocar un proxy de API desde otro proxy de API conlleva saltos de red innecesarios, es decir, la solicitud tiene que pasar de un procesador de mensajes a otro.
Práctica recomendada
- Usa la función de encadenamiento de proxies
para invocar un proxy de API desde otro. El encadenamiento de proxies es más eficiente, ya que usa una conexión local para hacer referencia al endpoint de destino (otro proxy de API).
El código de ejemplo muestra el encadenamiento de proxies mediante
LocalTargetConnection
en la definición de tu endpoint:<!-- /antipatterns/examples/2-3.xml --> <LocalTargetConnection> <APIProxy>proxy2</APIProxy> <ProxyEndpoint>default</ProxyEndpoint> </LocalTargetConnection>
El proxy de API invocado se ejecuta en el mismo procesador de mensajes, por lo que se evita el salto de red, como se muestra en la siguiente figura:
Figura 2: Proceso de código con encadenamiento de proxies