Proxies de API (API Gateway como proxy)
O que é um proxy de API
Um proxy de API (API Gateway) é um servidor intermediário que recebe requisições de API dos clientes, as processa e as encaminha para os serviços de backend. Diferente dos proxies HTTP comuns, um API Gateway é especializado em gerenciar tráfego de API: roteamento, autenticação, rate limiting, transformação e monitoramento.
Um API Gateway é um componente-chave da arquitetura de microsserviços e uma ferramenta importante para expor APIs a consumidores externos com segurança.
Papéis de um proxy de API
1. Ponto único de entrada
Os clientes acessam um único endereço (api.example.com) e o gateway roteia as requisições para os microsserviços correspondentes:
- api.example.com/users → user-service
- api.example.com/orders → order-service
- api.example.com/products → product-service
2. Autenticação e autorização
O gateway verifica chaves de API, tokens JWT e credenciais OAuth antes que a requisição chegue ao backend. Isso alivia a carga dos microsserviços.
3. Rate limiting
Limitação do número de requisições de um mesmo cliente/IP dentro de um período. Proteção contra abuso e sobrecarga.
4. Transformação de requisições
Modificação de cabeçalhos, parâmetros e corpos de requisição/resposta. Por exemplo, converter XML em JSON para serviços legados.
5. Cache
Cache das respostas da API para reduzir a carga no backend e acelerar as respostas.
6. Monitoramento e logging
Coleta de métricas para cada endpoint da API: número de requisições, latência, taxa de erros.
API Gateway no contexto dos proxies
Diferenças em relação a um reverse proxy comum
| Parâmetro | Reverse Proxy (Nginx) | API Gateway |
|---|---|---|
| Foco | Tráfego HTTP de uso geral | Tráfego específico de API |
| Roteamento | Por URL/Host | Por caminho da API, versão, cabeçalhos |
| Auth | Básica | OAuth, JWT, chaves de API, HMAC |
| Rate Limiting | Simples (por IP) | Avançado (por usuário, por plano) |
| Transformação | Mínima | Completa (JSON/XML, protocolo) |
| Versionamento | Não | Roteamento /v1/, /v2/ |
| Portal do desenvolvedor | Não | Documentação, chaves, monitoramento |
API Gateway como proxy para APIs externas
Além de atuar como gateway de frontend para os próprios serviços, um proxy de API pode ser usado para acessar APIs externas:
- Agregação — combinar requisições a várias APIs em uma só
- Contornar rate limits — distribuir as requisições por um pool de IPs
- Cache — reduzir o número de requisições reais à API
- Failover — alternar entre provedores de API
Soluções populares de API Gateway
Open Source
| Solução | Linguagem | Recursos |
|---|---|---|
| Kong | Lua/Go | A mais popular, arquitetura baseada em plugins |
| Tyk | Go | Analytics e portal integrados |
| KrakenD | Go | Ultrarrápido, stateless |
| APISIX | Lua | Apache Foundation, roteamento dinâmico |
| Gravitee | Java | Event-native, baseada em políticas |
Em nuvem
| Solução | Provedor | Recursos |
|---|---|---|
| AWS API Gateway | Amazon | Integração com Lambda, totalmente gerenciado |
| Azure API Management | Microsoft | Portal do desenvolvedor, plataforma completa |
| Google Cloud Endpoints | gRPC-native, integração com Cloud Run | |
| Cloudflare API Shield | Cloudflare | Proteção contra DDoS, deploy na edge |
Padrões de uso do proxy de API
Composição de API
O gateway combina respostas de vários microsserviços em uma única resposta para o cliente.
Backend for Frontend (BFF)
API Gateways separados para clientes diferentes (app mobile, web, IoT). Cada um é otimizado para o seu tipo específico de cliente.
Versionamento de API
Roteamento de requisições para diferentes versões de backend:
- /api/v1/users → serviço antigo
- /api/v2/users → serviço novo
Circuit Breaker
Desativação automática de um backend problemático quando o limite de erros é excedido. As requisições passam a retornar uma resposta de fallback.
Request Shadowing
Duplicação do tráfego para um backend de teste, permitindo testes de carga sem impacto na produção.
Proxies de API para contornar limitações
Proxy de APIs pagas
Criar um proxy na frente de uma API paga para:
- Adicionar cache (redução de custos)
- Monitorar o uso
- Fallback para uma API alternativa
- Rate limiting do lado do cliente
Contornar CORS
Um proxy de API no seu próprio domínio resolve problemas de CORS ao acessar APIs externas a partir do navegador.
Transformação de protocolo
Conversão entre REST, GraphQL, gRPC e SOAP através de um API Gateway. O cliente se comunica usando um protocolo enquanto o backend usa outro.
Segurança do API Gateway
Medidas principais
- Terminação TLS — HTTPS no ponto de entrada
- Validação de entrada — verificação dos parâmetros da requisição
- IP whitelisting — restrição de acesso por IP
- Validação de JWT — verificação de tokens
- Limite de tamanho da requisição — limitar o tamanho das requisições
- Proteção contra SQL injection — filtragem de requisições maliciosas
Integração com WAF
Um API Gateway costuma ser integrado a um Web Application Firewall para proteção adicional contra ataques.
Conclusão
Proxies de API e API Gateways são tipos especializados de proxy para gerenciar tráfego de API. Eles garantem segurança, escalabilidade e observabilidade da API. Em uma arquitetura de microsserviços, o API Gateway é um componente indispensável e, no contexto do trabalho com APIs externas, é uma ferramenta poderosa de otimização e controle.
