Esta é a documentação do Apigee Edge.
Acesse
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:
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 (Roteador > MP) no momento da 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: