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:
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:
- 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. - A segunda parte do URL,
/v1/weather
, é determinada pelo elemento<BasePath>
noProxyEndpoint
. 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. - 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
TargetEndpoint
s 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
- Referência de configuração de proxy da API
- Referência de propriedades do endpoint
- Balanceamento de carga entre servidores de back-end