Uma política de reescrita HTTP modifica o caminho e o nome do host de uma requisição antes do encaminhamento para um serviço de backend. Esse recurso oferece controle preciso sobre o roteamento para atender aos requisitos de negócios e de arquitetura.
Configure uma política de reescrita HTTP
A reescrita HTTP altera o caminho e o nome do host da requisição original.
-
O Cloud-native API Gateway oferece duas formas de configurar uma política de reescrita HTTP: para APIs gerenciadas fora de uma instância e para APIs gerenciadas dentro de uma instância.
APIs fora de uma instância
Faça login no console do Cloud-native API Gateway. No painel de navegação à esquerda, clique em API e selecione uma região na barra de menu superior.
Clique na API desejada. Na lista suspensa All instances na parte superior, selecione a instância de destino ou escolha All Instances.
Na aba Routes, selecione a rota desejada.
APIs dentro de uma instância
Faça login no console do Cloud-native API Gateway. No painel de navegação à esquerda, clique em Instance e selecione uma região na barra de menu superior.
Na página Instance, clique no ID da instância de gateway de destino. No painel de navegação à esquerda, clique em API e, em seguida, clique na API desejada.
Na aba Routes, selecione a rota desejada.
Clique na aba Configure Policy. Em seguida, na seção Inbound Processing, clique em Enable Policy/Plug-in.
Clique no cartão HTTP Rewrite. No painel Add Policy: HTTP Rewrite, configure os parâmetros e clique em Add.
Reescrita de caminho
O Cloud-native API Gateway oferece suporte a dois métodos de reescrita de caminho: reescrita de prefixo e reescrita por expressão regular.
Reescrita de prefixo
A reescrita de prefixo altera o prefixo do caminho de uma requisição.
Exemplo 1
Para alterar o caminho de uma requisição de /app/test para /test antes de encaminhá-la a um serviço de backend, use a seguinte configuração:
Condição de correspondência de rota: O tipo de correspondência é Prefix Match e o caminho é
/app/.Reescrita: O tipo de reescrita é Prefix Rewrite e o caminho é
/.
O caminho da condição de correspondência de rota deve ser /app/, pois a reescrita de prefixo substitui apenas a string correspondida pela regra de prefixo. Se o caminho da condição fosse definido como /app, o caminho reescrito resultaria em //test, o que não é o resultado esperado.
Exemplo 2
Para alterar o caminho de uma requisição de /v1/test para /v2/test, aplique a configuração abaixo:
Condição de correspondência de rota: O tipo de correspondência é Prefix Match e o caminho é
/v1.Reescrita: O tipo de reescrita é Prefix Rewrite e o caminho é
/v2.
A reescrita de prefixo exige que o tipo de correspondência da rota seja Prefix Match. Rotas com Exact Match ou Regex Match não oferecem suporte a esse tipo de reescrita. Como a correspondência de prefixo se aplica a todas as requisições que compartilham o mesmo prefixo de caminho, avalie cuidadosamente se todas devem ser reescritas. Caso contrário, considere usar a reescrita por expressão regular.
Reescrita por expressão regular
A reescrita por expressão regular modifica parte do caminho da requisição usando o parâmetro mode (padrão regex para correspondência) e o parâmetro replacement (string de substituição). Para detalhes sobre a sintaxe, consulte sintaxe de expressões regulares.
Exemplo 1
Para alterar o caminho de uma requisição de /aaa/one/bbb/one/ccc para /aaa/two/bbb/two/ccc, use a configuração a seguir:
Condição de correspondência de rota: O tipo de correspondência é Exact Match e o caminho é
/aaa/one/bbb/one/ccc.Reescrita: O tipo de reescrita é Regex Rewrite, o
modeéonee oreplacementétwo.
Exemplo 2
Para remover o prefixo /httpbin de um caminho como /httpbin/(.*)/(.*) e trocar os dois grupos capturados, defina a seguinte configuração:
Condição de correspondência de rota: O tipo de correspondência é Regex Match e o caminho é
/httpbin/(.*)/(.*).Reescrita: O tipo de reescrita é Regex Rewrite, o
modeé/httpbin/(.*)/(.*)e oreplacementé/\2/\1. Nessa string,\1representa o primeiro grupo capturado pela expressão regular e\2representa o segundo. Isso equivale às variáveis $1 e $2 usadas no Nginx.
A reescrita por expressão regular é um recurso avançado com sintaxe complexa, geralmente usado em casos especiais. Recomendamos a reescrita de prefixo sempre que ela atender aos seus requisitos.
Reescrita de nome de host
O Cloud-native API Gateway oferece suporte à reescrita exata de nome de host.
Por exemplo, para alterar o nome de host da requisição de test.com para dev.com, defina o nome de host de reescrita como dev.com na configuração da política.