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

  1. id:

    • É um identificador único para a rota. Neste caso, persons_service é o nome da rota que será utilizada para referenciar essa configuração.
  2. 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.
  3. 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.
  4. 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.

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).

Referências