Noções básicas sobre rotas

Esta página se aplica à Apigee e à Apigee híbrida.

Confira a documentação da Apigee Edge.

Uma rota determina o caminho de uma solicitação de ProxyEndpoint para TargetEndpoint. Incluído na rota está o URL usado para acessar a API ProxyEndpoint e o URL do serviço de back-end definido pelo TargetEndpoint.

Assista a este vídeo para ver uma introdução sobre rotas, descrevendo o relacionamento entre ProxyEndpoint e TargetEndpoint.

Como determinar o URL do endpoint do proxy da API

A imagem a seguir mostra uma solicitação que chega ao ProxyEndpoint de um aplicativo e que é direcionada para o serviço de back-end:

Uma solicitação de cliente HTTP passa por um proxy de API da Apigee para o serviço HTTP. Depois,
    a resposta passa pelo proxy de API ao cliente.

Depois de criar um proxy de API na Apigee, o URL padrão que um aplicativo usa para acessar o proxy tem o seguinte formato:

https://www.example.com/shopping/cart/addItem
        |_____________| |___________| |_____|
               |             |           |
            hostname      basepath     resource

Em que:

  • O nome do host é um domínio que você adicionou ao DNS ou um endereço IP.
  • O caminho base e o resource-path são definidos ao criar o proxy de API.

Quando uma solicitação chega à Apigee, ela analisa o URL para direcionar a solicitação ao ProxyEndpoint correto. Por exemplo, o URL a seguir é usado para acessar um proxy de API:

http://example.com/v1/weather/forecastrss

Se você examinar a definição de ProxyEndpoint do proxy da API na figura acima, poderá ver como esse URL é analisado:

  1. A parte de domínio do URL, http://example.com, corresponde a um nome de host definido em um grupo de ambiente. O proxy foi implantado em um ou mais ambientes nesse grupo. Para mais informações, consulte Sobre ambientes e grupos de ambiente.
  2. A segunda parte do URL, /v1/weather, é determinada pelo elemento <BasePath> no ProxyEndpoint. Você definiu o caminho base ao criar o proxy. O caminho base precisa ser exclusivo do proxy de API do ambiente, para que dois proxies de API no mesmo ambiente não tenham o mesmo caminho base.
  3. A terceira parte do URL, /forecastrss, é um recurso definido pelo proxy da API com o fluxo condicional correspondente definido pelo elemento <Flows>.

Vídeo: assista um vídeo breve para saber mais sobre os endpoints de proxy da API.

Como determinar o URL do endpoint de destino

O elemento <RouteRule> em uma definição ProxyEndpoint determina o destino do proxy de API e é avaliado depois que todas as políticas no pré-Flow, fluxos condicionais e PostFlow da solicitação ProxyEndpoint são processadas.

Um ProxyEndpoint pode definir o destino como:

  • Um URL direto para um serviço de back-end.
  • Uma única definição de TargetEndpoint.
  • Vários TargetEndpoints em que o proxy de API delega a solicitação a um endpoint de destino com base em uma condição.
  • Rota ou destino nulos, que significa que a solicitação não é encaminhada para um destino. Em vez disso, todo o processamento da solicitação e a geração da resposta ocorrem na Apigee.

Vídeo: assista um vídeo breve para saber mais sobre os endpoints de destino.

URL direto

Um ProxyEndpoint pode invocar diretamente um serviço de back-end, ignorando qualquer configuração TargetEndpoint nomeada. Por exemplo, a <RouteRule> a seguir faz uma chamada HTTP para http://example.com/myAPI:

<RouteRule name="default">
  <URL>http://example.com/myAPI</URL>
</RouteRule>

No entanto, como não há TargetEndpoint, só é possível adicionar políticas aos fluxos definidos pelo ProxyEndpoint.

Destino único

Em uma única definição de destino, o ProxyEndpoint faz referência a uma única definição de TargetEndpoint pelo nome, conforme mostrado na figura acima:

<RouteRule name="default">
  <TargetEndpoint>default</TargetEndpoint>
</RouteRule>

Todas as solicitações para esse proxy de API são direcionadas para a mesma definição de TargetEndpoint. A tag <URL> em TargetEndpoint determina o local do serviço de back-end. Na figura acima, o URL de destino é http://weather.yahooapis.com.

Destinos condicionais

A tag <RouteRule> permite que você direcione uma solicitação para um destino com base em uma condição. É possível usar variáveis de fluxo, parâmetros de consulta, cabeçalhos HTTP, conteúdo da mensagens ou informações contextuais, como hora do dia e local, para determinar o endpoint de destino. Por exemplo, é possível incluir uma área geográfica, como EUA e Reino Unido, em um URL de solicitação. É possível encaminhar uma solicitação para um endpoint de destino com base na região.

A regra de rota a seguir avalia um cabeçalho HTTP em uma solicitação. Se o cabeçalho HTTP routeTo tiver o valor TargetEndpoint1, a solicitação será encaminhada para o TargetEndpoint chamado TargetEndpoint1. Caso contrário, a solicitação será encaminhada para o TargetEndpoint2.

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <TargetEndpoint>TargetEndpoint2</TargetEndpoint>
</RouteRule>

Se você tiver várias regras de rota, crie uma como padrão, ou seja, como uma regra de rota sem condição. Certifique-se de que a regra de rota padrão esteja definida por último na lista de rotas condicionais porque as regras são avaliadas de cima para baixo no ProxyEndpoint.

Consulte também Rotas condicionais e Referência de condições.

Vídeo: assista a um vídeo breve para saber como rotear para um endpoint de destino usando destinos condicionais.

Rota nula

Uma rota nula é compatível com cenários em que a mensagem de solicitação não precisa ser encaminhada para um TargetEndpoint. Isso é útil quando o ProxyEndpoint executa todo o processamento necessário, por exemplo, usando JavaScript para chamar um serviço externo.

O exemplo a seguir define uma rota nula:

<RouteRule name="GoNowhere"/>

Saiba mais