Por que seu projeto C# precisa de um Gateway de API?
\n\nImagine 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\nO que é um Gateway de API e por que ele é necessário para microsserviços?
\n\nGateway 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
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\nDuas principais ferramentas para Gateway de API em C#
\n\nNo ecossistema .NET, existem duas soluções poderosas que merecem sua atenção:
\n\nOcelot C#
\nProvavelmente 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
YARP .NET (Yet Another Reverse Proxy)
\nUm 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\nNeste artigo, vamos focar no Ocelot — ele é mais simples para começar e cobre 90% das tarefas típicas.
\n\nCriando um Gateway de API em C# com Ocelot: guia passo a passo
\n\nVamos 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).
Passo 1: Criando o projeto
\nAbra o terminal e execute:
\ndotnet new webapi -n ApiGatewayDemo\ncd ApiGatewayDemo\n\nInstale o pacote Ocelot:
\ndotnet add package Ocelot\n\nPasso 2: Configurando o roteamento
\nCrie um arquivo ocelot.json na raiz do projeto. Nele, descreveremos as regras de roteamento:
{\n "Routes": [\n {\n "DownstreamPathTemplate": "/api/users/{everything}",\n "DownstreamScheme": "http",\n "DownstreamHostAndPorts": [\n