Encadena proxies de API

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

Puedes especificar que un proxy sea el extremo de destino de otro y que conecte de forma efectiva los dos proxies en una cadena de proxy. La cadena de proxies de esta forma puede ayudarte a evitar un salto de red y, así, mejorar el rendimiento general.

Con el encadenamiento de proxies, debes especificar que un proxy es el extremo de destino local del otro. En lugar de usar el elemento HTTPTargetConnection para realizar una llamada al segundo proxy, debes usar el elemento LocalTargetConnection.

<LocalTargetConnection>
    <APIProxy>myproxy2</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

Puede resultarte útil encadenar un proxy cuando tienes un proxy que ofrece funcionalidad discreta de bajo nivel que consumirán otros proxies. Por ejemplo, un proxy que expone operaciones de creación, lectura, actualización y eliminación con un almacén de datos de backend puede ser el proxy de destino para varios otros proxies que exponen los datos a los clientes.

Video: Mira este video breve para obtener más información sobre el encadenamiento de proxy de API.

Cómo funciona la encadenamiento de proxy

El encadenamiento usa un sistema local para minimizar la sobrecarga de la red cuando se llama a un proxy desde otro. Esta conexión local es más eficiente porque omite funciones de red, como balanceadores de cargas, routers y procesadores de mensajes.

A continuación, se muestra la diferencia entre la conexión de proxies mediante HTTPTargetConnection y LocalTargetConnection (encadenamiento de proxy):

Para conectar proxies, debes especificar que uno es un extremo de destino local del otro. Puedes crear una conexión local entre proxies de dos maneras:

  • Especificando el nombre del proxy de destino y un nombre de ProxyEndpoint
  • Especifica una ruta de acceso al extremo del proxy de destino

Conecta los proxies de destino dentro de una configuración TargetEndpoint, mediante un elemento LocalTargetConnection, como se describe a continuación.

Conecta proxies por nombre de proxy

Puedes especificar el proxy de destino por nombre. Esto puede resultar muy útil cuando creas la conexión desde el principio y desarrollas los proxies juntos. Si no conoces el nombre (o el nombre puede cambiar), considera conectarte con la ruta de acceso del extremo del proxy de destino, como se describe a continuación.

Cuando te conectas a un proxy de destino por nombre, debes especificar su nombre y el nombre de su ProxyEndpoint.

En el ejemplo siguiente, se especifica un proxy de destino llamado data-manager, junto con el nombre de ProxyEndpoint que expone data-manager. Para obtener información de referencia, consulta la Referencia de la configuración del proxy de API.

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <APIProxy>data-manager</APIProxy>
        <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
</TargetEndpoint>

Conecta proxies por ruta

Puedes especificar el proxy de destino según su ruta de extremo. Se recomienda hacerlo de esta manera cuando no sepas el nombre del proxy o cuando el nombre cambie.

Si tu proxy es solo el consumidor del proxy de destino, como cuando no desarrollas ambos, la ruta de acceso puede ser la forma más confiable de conectarse. Por ejemplo, si otro equipo desarrolla y mantiene el proxy al que te estás conectando, puedes conectarte mediante una ruta de acceso confiable de extremos.

En el ejemplo siguiente, se especifica un proxy de destino en /v1/streetcarts/foodcarts/data-manager, en el que se supone que el host es el mismo que el proxy actual. Para obtener información de referencia, consulta la Referencia de la configuración del proxy de API.

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <Path>/v1/streetcarts/foodcarts/data-manager</Path> 
    </LocalTargetConnection>
</TargetEndpoint>

Conecta proxies con la consola de administración

Puedes crear conexiones de encadenamiento de proxy con la consola de administración de Edge.

  1. Abre el proxy que consumirá el proxy de destino.
  2. En Navigator, haz clic en el signo más junto a Target Endpoints.
  3. En el diálogo New Target Endpoint, ingresa el nombre del extremo de destino.
  4. Debajo del cuadro Target Endpoint Name, selecciona una de las siguientes opciones:
    • Encadenamiento de proxy para seleccionar de una lista de proxies que ya se encuentran en la organización y el entorno.
      1. En el menú desplegable Proxy Name, selecciona el proxy de destino.
      2. En el cuadro Proxy Endpoint, ingresa la ruta de destino del proxy de destino a la que deseas conectarte.
    • Path Chaining para ingresar la ruta base del proxy de destino, como /mypath/myproxy/myendpoint.
  5. Haga clic en Add.

Proxies cadenados, productos de API y seguridad

El encadenamiento de proxy es mejor cuando los proxies están en el mismo producto de API. De forma predeterminada, ambas están disponibles para los clientes. Por el momento, Apigee no admite la agrupación del segundo proxy en un producto de API distinto al que los clientes no deberían tener acceso.

Si tu segundo proxy debe estar protegido contra las solicitudes de cliente directas, considera agregar lógica para que tu segundo proxy analice la dirección IP del cliente. En el caso de una llamada realizada a través de una cadena, la dirección IP será local. Tu código puede validar que es local antes de permitir que continúe el procesamiento. Consulta la política de control de acceso para encontrar una manera de hacerlo.