Como encadear proxies de API

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

Você pode especificar que um proxy é o endpoint de destino de outro, conectando efetivamente os dois proxies em uma cadeia de proxy. Encadear proxies dessa maneira pode ajudar a evitar um salto de rede e, portanto, melhorar o desempenho geral.

Com o encadeamento de proxy, você especifica que um proxy é o endpoint de destino local do outro. Em vez de usar o elemento HTTPTargetConnection para fazer uma chamada para o segundo proxy, use o elemento LocalTargetConnection.

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

A cadeia de proxy pode ser útil quando você tem um proxy que oferece alguma funcionalidade discreta de baixo nível que outros proxies consumirão. Por exemplo, um proxy que expõe operações de criação/leitura/atualização/exclusão com um armazenamento de dados de back-end pode ser o proxy de destino para vários outros proxies que expõem os dados aos clientes.

Vídeo: assista a um pequeno vídeo para saber mais sobre o encadeamento de proxies de API.

Como funciona o encadeamento de proxy

O encadeamento de proxy usa uma conexão local para minimizar a sobrecarga de rede ao chamar um proxy de outro. Essa conexão local é mais eficiente porque ignora recursos de rede, como balanceadores de carga, roteadores e processadores de mensagens.

Veja a seguir a diferença entre conectar proxies usando HTTPTargetConnection e LocalTargetConnection (encadeamento de proxy):

Você conecta proxies especificando que um é um endpoint de destino local do outro. Você pode criar uma conexão local entre proxies de duas maneiras:

  • Especificando o nome do proxy de destino e um nome ProxyEndpoint
  • Especificando um caminho para o endpoint do proxy de destino

Você conecta proxies de destino em uma configuração TargetEndpoint usando um elemento LocalTargetConnection, conforme descrito abaixo.

Como conectar proxies por nome de proxy

É possível especificar o proxy de destino pelo nome. Isso pode ser útil quando você cria a conexão desde o início e desenvolve os proxies juntos. Se você não souber o nome (ou o nome pode mudar), considere se conectar com o caminho de endpoint do proxy de destino, conforme descrito abaixo.

Ao se conectar a um proxy de destino por nome, você especifica o nome do proxy e o nome de ProxyEndpoint.

O exemplo a seguir especifica um proxy de destino chamado data-manager, com o nome ProxyEndpoint exposto por data-manager. Para informações de referência, consulte a referência de configuração do 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>

Como conectar proxies por caminho

É possível especificar o proxy de destino por caminho de endpoint. Convém fazer isso dessa maneira quando você não souber o nome do proxy ou quando ele for alterado.

Se o proxy for simplesmente o consumidor do proxy de destino, por exemplo, quando você não está desenvolvendo ambos, o caminho pode ser a maneira mais confiável de se conectar. Por exemplo, se o proxy ao qual você está se conectando for desenvolvido e mantido por outra equipe, convém se conectar usando um caminho de endpoint confiável.

No exemplo a seguir, especificamos um proxy de destino em /v1/streetcarts/foodcarts/data-manager, em que o host é considerado igual ao proxy atual. Para informações de referência, consulte a referência da configuração do 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>

Como conectar proxies com o console de gerenciamento

É possível criar conexões de encadeamento de proxy usando o console de gerenciamento do Edge.

  1. Abra o proxy que consumirá o proxy de destino.
  2. No Navigator, clique no sinal de adição ao lado de Endpoints de destino.
  3. Na caixa de diálogo Novo endpoint de destino, insira o nome do endpoint de destino.
  4. Abaixo da caixa Nome do endpoint de destino, selecione uma das seguintes opções:
    • Proxy Chaining para selecionar em uma lista de proxies que já estão na organização e no ambiente.
      1. No menu suspenso Nome do proxy, selecione o proxy de destino.
      2. Na caixa Endpoint do Proxy, insira o caminho do endpoint do proxy de destino ao qual você quer se conectar.
    • Encadeamento de caminhos para inserir o caminho base do proxy de destino, como um /mypath/myproxy/myendpoint.
  5. Clique em Add.

Proxies em cadeia, produtos de API e segurança

O encadeamento de proxy é ideal nos casos em que ambos os proxies estão no mesmo produto da API. Por padrão, ambos estão disponíveis para os clientes. No momento, a Apigee não oferece suporte ao agrupamento do segundo proxy em um produto de API separado, em que os clientes não podem ter acesso.

Se o segundo proxy precisar ser protegido contra solicitações de cliente direto, considere adicionar lógica para que o segundo proxy examine o endereço IP do cliente. No caso de uma chamada feita por encadeamento, o endereço IP será local. O código pode validar que ele é local antes de permitir que o processamento continue. Consulte a Política de controle de acesso para ver uma maneira de fazer isso.