Configuração de rotas via application.yaml
no Spring Cloud Gateway MVC
A configuração de rotas no arquivo application.yaml
utilizando o Spring Cloud Gateway MVC permite direcionar requisições HTTP para serviços (back-end) mapeados.
O Spring Cloud Gateway utiliza um modelo baseado em predicados e filtros para definir como as requisições são roteadas. Aqui está um guia detalhado sobre como configurar as rotas, utilizando o exemplo fornecido.
Estrutura Básica do application.yaml
A configuração das rotas é feita sob a propriedade spring.cloud.gateway.routes
, onde cada rota é definida com um identificador (id
), uma URI de destino (uri
), predicados que determinam quando a rota deve ser aplicada e filtros que podem modificar a requisição ou a resposta.
Exemplo de Configuração
No seu exemplo, a configuração é a seguinte:
spring:
cloud:
gateway:
mvc:
routes:
- id: persons_service
uri: http://localhost:8084
predicates:
- Path=/persons/**
filters:
- RewritePath=/persons/(?<segment>.*), /${segment}
Explicação dos Componentes
-
id:
- É um identificador único para a rota. Neste caso,
persons_service
é o nome da rota que será utilizada para referenciar essa configuração.
- É um identificador único para a rota. Neste caso,
-
uri:
- Define o endpoint para onde as requisições serão encaminhadas. Aqui, todas as requisições que correspondem à rota serão redirecionadas para
http://localhost:8084
.
- Define o endpoint para onde as requisições serão encaminhadas. Aqui, todas as requisições que correspondem à rota serão redirecionadas para
-
predicates:
- Os predicados são condições que devem ser atendidas para que a rota seja utilizada. No exemplo, o predicado
Path=/persons/**
significa que qualquer requisição cujo caminho comece com/persons/
será roteada através dessa configuração.
- Os predicados são condições que devem ser atendidas para que a rota seja utilizada. No exemplo, o predicado
-
filters:
- Os filtros permitem modificar a requisição ou a resposta. No caso do filtro
RewritePath
, ele altera o caminho da requisição antes de encaminhá-la ao serviço de backend. A expressão/(?<segment>.*)
captura todo o segmento após/persons/
e o substitui por${segment}
, efetivamente removendo/persons/
do caminho na requisição que é enviada ao backend.
- Os filtros permitem modificar a requisição ou a resposta. No caso do filtro
Funcionamento da Rota
Quando uma requisição é feita para um endpoint que corresponde ao predicado (por exemplo, /persons/123
), o Spring Cloud Gateway:
- Verifica se o caminho da requisição corresponde ao predicado.
- Se corresponder, aplica os filtros definidos.
- Redireciona a requisição para
http://localhost:8084
, mas com o caminho reescrito (neste caso,/123
).