Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Configurando um API Gateway com Spring Cloud Gateway

O Spring Cloud Gateway é essencial para gerenciar o tráfego entre clientes e microservices. Ele simplifica o roteamento, melhora a segurança e otimiza a comunicação entre serviços. Neste artigo, vou mostrar como configurar um API Gateway básico com Spring Cloud Gateway.

Adicionando as Dependências Necessárias

Para configurar o Spring Cloud Gateway, adicione as seguintes dependências ao pom.xml:

<dependencies>
    <!-- Spring Boot Actuator para monitoramento -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <!-- Segurança (caso precise no futuro) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    <!-- Spring Cloud Gateway -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-gateway-mvc</artifactId>
    </dependency>
    
    <!-- Dependências para testes -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

Além disso, gerencie a versão do Spring Cloud no pom.xml:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring-cloud.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Configurando o application.yml

O Spring Cloud Gateway permite definir rotas que direcionam as requisições para os microservices corretos. Aqui está um exemplo de configuração básica:

server:
  port: 8080

spring:
  application:
    name: spring-cloud-gateway

  cloud:
    gateway:
      routes:
        - id: ticket-service
          uri: http://localhost:8081/
          predicates:
            - Path=/tickets/**

        - id: order-service
          uri: http://localhost:8082/
          predicates:
            - Path=/orders/**

  # Configuração para comunicação com gRPC (opcional)
grpc:
  client:
    ticket-service:
      address: static://localhost:9000
      negotiationType: plaintext
    order-service:
      address: static://localhost:9001
      negotiationType: plaintext
    search-service:
      address: static://localhost:9002
      negotiationType: plaintext

logging:
  level:
    org.springframework: INFO

Comunicação entre Serviços

O Spring Cloud Gateway pode se integrar a diferentes formas de comunicação entre microservices. No meu projeto, escolhi gRPC por ser mais eficiente e rápido. No entanto, você pode usar REST HTTP, dependendo das necessidades do seu sistema.

Conclusão

O Spring Cloud Gateway simplifica a comunicação entre microservices, melhora a segurança e oferece um roteamento flexível. Com essa configuração básica, seu API Gateway já estará pronto para distribuir as requisições corretamente. Você pode expandir essa implementação adicionando autenticação, filtros personalizados e mais funcionalidades.

Marcos Costa

Writer & Blogger

Deixe seu comentário!

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Copyright © 2025 Loopino. Todos os direitos reservados.