Antipadrão: chamar um proxy dentro de um proxy usando código personalizado ou como um destino

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

O Edge permite invocar um proxy de API a partir de outro proxy de API. Esse recurso é útil especialmente se você tiver um proxy de API que contenha código reutilizável que possa ser usado por outros proxies de API.

Antipadrão

Invocar um proxy de API de outro usando HTTPHTTPConnection no endpoint de destino ou código de JavaScript personalizado resulta em outro salto de rede.

Chamar o proxy 2 do proxy 1 usando HTTPTargetConnection

O exemplo de código a seguir chama o Proxy 2 do Proxy 1 usando HTTPTargetConnection:

<!-- /antipatterns/examples/2-1.xml -->
<HTTPTargetConnection>
  <URL>http://myorg-test.apigee.net/proxy2</URL>
</HTTPTargetConnection>

Chamar o proxy 2 do proxy 1 a partir do código JavaScript

O próximo exemplo de código invoca o proxy 2 do proxy 1 usando JavaScript:

<!-- /antipatterns/examples/2-2.xml -->
var response = httpClient.send('http://myorg-test.apigee.net/proxy2);
response.waitForComplete();

Fluxo de códigos

Para entender por que isso tem uma desvantagem inerente, precisamos entender o trajeto que uma solicitação leva conforme ilustrado no diagrama abaixo:

Figura 1: fluxo de código.

Conforme mostrado no diagrama, uma solicitação passa por vários componentes distribuídos, incluindo o roteador e o Processador de mensagens.

Nos exemplos de código acima, invocar o Proxy 2 do Proxy 1 significa que a solicitação precisa ser roteada pela rota tradicional (ou seja, Roteador > MP) no ambiente de execução. Isso seria complicado invocar uma API de um cliente, fazendo vários saltos de rede que adicionam à latência. Esses saltos não são necessários considerando que a solicitação do proxy 1 já "alcançou" o MP.

Impacto

Invocar um proxy de API de outro proxy de API gera saltos de rede desnecessários, que é a solicitação que deve ser passada de um processador de mensagens para outro processador de mensagens.

Prática recomendada

  • Use o recurso de cadeia de proxy para invocar um Proxy de API de outro. O encadeamento de proxy é mais eficiente, porque usa conexão local para fazer referência ao endpoint de destino (outro proxy da API).

    O exemplo de código mostra o encadeamento de proxy usando LocalTargetConnection na definição do endpoint:

    <!-- /antipatterns/examples/2-3.xml -->
    <LocalTargetConnection>
      <APIProxy>proxy2</APIProxy>
      <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
    

    O proxy da API invocado é executado no mesmo processador de mensagens. Consequentemente, ele evita o salto de rede conforme mostrado na figura a seguir:

    Figura 2: fluxo de código com encadeamento de proxy

Leia mais