Gateway de API para microsserviços em C#: guia completo

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que seu projeto C# precisa de um Gateway de API?

\n\n

Imagine que você está construindo uma aplicação web moderna em C#. Você tem um serviço de usuários, um serviço de pedidos, um serviço de pagamentos — e cada um deles vive em sua própria porta, ou até mesmo em servidores diferentes. A aplicação cliente (frontend ou aplicativo móvel) precisa conhecer todos esses endereços, formatos de dados, protocolos de autenticação. Um pesadelo, certo?

\n\n

É aqui que entra o Gateway de API para serviços C# — um ponto de entrada único que assume todo o "trabalho sujo": roteamento, agregação de respostas, verificação de tokens, cache e balanceamento de carga. Neste artigo, vamos analisar como implementar um gateway de API .NET na prática, usando ferramentas modernas como Ocelot C# e YARP .NET.

\n\n

O que é um Gateway de API e por que ele é necessário para microsserviços?

\n\n

Gateway de API é uma camada intermediária entre os clientes e seus serviços de backend. Ele funciona como um "despachante": recebe requisições HTTP de entrada, analisa-as e as redireciona para os microsserviços C# apropriados. Além disso, o gateway pode realizar tarefas adicionais:

\n\n
    \n
  • Roteamento de requisições — direcionar requisições para diferentes serviços com base na URL, cabeçalhos ou parâmetros.
  • \n
  • Agregação de dados — coletar respostas de vários serviços e retornar um único JSON para o cliente.
  • \n
  • Autenticação de Gateway de API — verificar tokens JWT ou chaves de API antes que a requisição chegue ao serviço.
  • \n
  • Balanceamento de carga — distribuir requisições entre instâncias de um mesmo serviço.
  • \n
  • Cache — armazenar temporariamente respostas para dados frequentemente solicitados.
  • \n
  • Rate Limiting — limitar o número de requisições de um único cliente.
  • \n
\n\n

Sem um gateway de API .NET, cada cliente precisa conhecer a arquitetura de todo o sistema. Com ele, o cliente se comunica apenas com um único endpoint, e todo o resto acontece "sob o capô".

\n\n

Duas principais ferramentas para Gateway de API em C#

\n\n

No ecossistema .NET, existem duas soluções poderosas que merecem sua atenção:

\n\n

Ocelot C#

\n

Provavelmente o Gateway de API para serviços C# mais popular. Ocelot é uma biblioteca de código aberto que adiciona funcionalidades de gateway a qualquer aplicação ASP.NET Core. Ela suporta:

\n
    \n
  • Roteamento baseado em configuração JSON
  • \n
  • Agregação de respostas
  • \n
  • Autenticação e autorização
  • \n
  • Rate limiting
  • \n
  • Balanceamento de carga (RoundRobin, LeastConnection)
  • \n
  • WebSockets
  • \n
\n\n

YARP .NET (Yet Another Reverse Proxy)

\n

Um projeto da Microsoft que se posiciona como um proxy reverso de alto desempenho. YARP é mais flexível e performático, mas requer mais configuração manual. É ideal se você precisa de controle total sobre cada requisição.

\n\n

Neste artigo, vamos focar no Ocelot — ele é mais simples para começar e cobre 90% das tarefas típicas.

\n\n

Criando um Gateway de API em C# com Ocelot: guia passo a passo

\n\n

Vamos escrever código real. Criaremos um gateway de API .NET que roteará requisições para dois microsserviços: UserService (porta 5001) e OrderService (porta 5002).

\n\n

Passo 1: Criando o projeto

\n

Abra o terminal e execute:

\n
dotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo
\n\n

Instale o pacote Ocelot:

\n
dotnet add package Ocelot
\n\n

Passo 2: Configurando o roteamento

\n

Crie um arquivo ocelot.json na raiz do projeto. Nele, descreveremos as regras de roteamento:

\n\n
{\n  "Routes": [\n    {\n      "DownstreamPathTemplate": "/api/users/{everything}",\n      "DownstreamScheme": "http",\n      "DownstreamHostAndPorts": [\n                

Blogs

Book Recommendations