Ao processar uma solicitação recebida, o Cloud-native API Gateway avalia as regras de rota configuradas em ordem decrescente de prioridade. Se uma solicitação corresponder a uma regra, o gateway a encaminha para o service de backend definido nessa regra. Caso nenhuma regra corresponda, o gateway retorna um erro 404.
Prioridade de correspondência de rotas
As regras de priorização são as seguintes: Associated Domain Name > Path > Header > Query Parameters > Created At.
Com base no Associated Domain Name: quanto maior a string do domínio, maior a prioridade.
-
Com base no Path:
Para diferentes tipos de Match Rule, a prioridade é: Equals To > Prefix > Regular Expression Match.
Para o mesmo tipo de Match Rule, uma string de Path mais longa tem maior prioridade.
Pelo número total de pares chave-valor no Header: quanto mais pares, maior a prioridade.
Pela quantidade total de pares chave-valor nos Query Parameters: quanto mais pares, maior a prioridade.
Conforme o campo Created At: quanto mais antiga a data de criação, maior a prioridade.
As regras de rota de todas as APIs na mesma instância são classificadas em conjunto durante a correspondência e avaliadas com base nas prioridades anteriores. Rotas pertencentes a APIs diferentes seguem as mesmas regras, desde que não haja conflitos.
Quando uma REST API é publicada como uma rota de prefixo, o gateway não gera uma rota por operação da API. Toda a API é consolidada em uma única rota de prefixo que corresponde às solicitações pelo caminho base efetivo da API. Essa rota participa das regras de prioridade acima como uma rota de correspondência por prefixo: uma string de caminho correspondida mais longa tem maior prioridade, e uma correspondência exata prevalece sobre uma correspondência por prefixo, que por sua vez prevalece sobre uma correspondência por expressão regular.
Quando rotas geradas por REST APIs, HTTP APIs e WebSocket APIs coexistem no mesmo gateway e nome de domínio, o gateway corresponde primeiro às rotas comuns de REST API, depois às rotas de HTTP API e WebSocket API e, por fim, às REST APIs publicadas como rotas de prefixo. Se o escopo de correspondência de uma rota de HTTP API ou WebSocket API se sobrepor ao de uma REST API publicada como rota de prefixo, uma rota de HTTP API ou WebSocket API totalmente correspondida terá precedência.
Procedimento
-
O Cloud-native API Gateway oferece duas formas de criar rotas: fora de uma instância ou dentro dela.
Fora da instância
Faça login no console do Cloud-native API Gateway. No painel de navegação à esquerda, escolha API. Na barra de menu superior, selecione uma região.
Clique em na API desejada. Na lista suspensa exibida, selecione a instância onde a rota será configurada ou escolha All Instances. No menu suspenso All Instances na parte superior, selecione a instância alvo.
Clique em Create Route.
Dentro da instância
Faça login no console do Cloud-native API Gateway. No painel de navegação à esquerda, escolha Instance. Na barra de menu superior, selecione uma região.
Na página Instance, clique em no ID da instância de gateway desejada. No painel de navegação à esquerda, escolha API e clique em na API alvo.
Clique em Create Route.
-
Na página Create Route, configure os parâmetros e clique em Save ou Save and Publish.
NotaAs regras de correspondência são combinadas usando um AND lógico. Quanto mais regras você especificar, menor será o escopo de correspondência.
A prioridade de correspondência das rotas corresponde à sua ordem de exibição na página de configuração de rotas.
Parâmetro
Descrição
Route Name
Insira um nome personalizado para a rota.
Route Description
Clique em Add Route Description para inserir uma descrição para a rota.
Domain Name
-
Selecione um ou mais domínios para correspondência da rota.
-
Para criar um novo domínio, clique em Add Domain e crie-o no painel exibido.
Path
Especifique o parâmetro de caminho na solicitação HTTP a ser correspondido.
-
Para o mesmo tipo de regra de correspondência, uma string de caminho mais longa tem maior prioridade.
-
Para diferentes tipos de regras de correspondência, a prioridade é: Equals To > Prefix > Regular Expression Match.
-
Equals To: O caminho da solicitação deve ser uma correspondência exata. Por exemplo, deve ser exatamente
/user. -
Prefix: O caminho da solicitação deve começar com o prefixo especificado, por exemplo,
/user. -
Regular Expression Match: O caminho da solicitação deve corresponder à expressão regular especificada.
-
Method
Especifique o parâmetro de método na solicitação HTTP a ser correspondido. É possível selecionar vários métodos HTTP. O padrão é ANY.
Header
Define os parâmetros de cabeçalho na solicitação HTTP para correspondência. Para o mesmo tipo de regra de correspondência, uma regra com mais parâmetros tem maior prioridade.
Query Parameters
Indica os parâmetros de consulta na solicitação HTTP a serem correspondidos. No caso do mesmo tipo de regra de correspondência, regras com mais parâmetros possuem maior prioridade.
Instance
Selecione a instância do Cloud-native API Gateway onde a rota entrará em vigor.
Scenario
Escolha o tipo de service alvo para a rota atual.
-
Básico: Single Service
-
Publicação gradual (Grayscale release): By Percentage (Multi-service), Tag (Tag-based Routing)
-
Outros: Mock, Redirect
Para obter mais informações sobre os diferentes tipos de services alvo, consulte Routes.
NotaA soma dos pesos de tráfego de todos os services alvo ponderados deve ser 100%.
Backend Services
Selecione um service de backend associado e a porta.
Nota-
Clique em Associated Service para selecionar uma source e um service no painel.
-
Diferentes tipos de source têm limites distintos quanto ao número de sources que podem ser adicionadas.
-
É possível adicionar no máximo cinco sources para Container Service for Kubernetes (ACK).
-
Apenas uma source Nacos ou Zookeeper pode ser adicionada.
-
Timeout Period (seconds)
Insira a duração do tempo limite. O padrão é 60 segundos. Um valor igual a 0 indica que não há tempo limite.
Fallback
Especifique um service de fallback. Se o service de backend de uma rota não tiver nós disponíveis, o gateway encaminhará a solicitação original para o service de fallback especificado.
NotaAtualmente, o recurso de fallback é suportado apenas entre services HTTP.
Retry Times
Informe o número de tentativas. O valor padrão é 2. Um valor igual a 0 desativa as novas tentativas.
Retry Condition
Selecione as condições que acionam uma nova tentativa.
Retry Status Code
Adicione um ou mais códigos de status que acionam uma nova tentativa.