Gateway centralizado para integração com APIs externas (pagamentos, antifraude, bureaus de crédito). Implementa autenticação, caching, retry e circuit breaker de forma transparente.
- Proxy reverso com camadas de middleware para cada responsabilidade
- Adapter Pattern para abstrair diferentes protocolos de APIs externas
- Strategy Pattern para diferentes providers
- Decorator Pattern para adicionar funcionalidades
- ✅ Autenticação OAuth2 e API Keys
- ✅ Rate limiting por cliente e endpoint
- ✅ Cache inteligente com invalidação
- ✅ Transformação de payloads (XML ↔ JSON)
- ✅ Logs de auditoria completos
- ✅ Circuit breaker e retry policies
- ✅ Health checks ativos para dependências
- ✅ Sandbox mode para testes
- .NET 8 - Framework principal
- PostgreSQL - Banco de dados
- Redis - Cache e rate limiting
- Polly - Resilience patterns
- Serilog - Logging estruturado
- xUnit - Testes unitários
IntegrationGateway/
├── src/
│ ├── IntegrationGateway.Api/ # API Gateway
│ ├── IntegrationGateway.Core/ # Domain models e interfaces
│ └── IntegrationGateway.Infrastructure/ # Implementações concretas
├── tests/
│ └── IntegrationGateway.Tests/ # Testes unitários
└── IntegrationGateway.sln
- .NET 8 SDK
- PostgreSQL
- Redis
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=integration_gateway;Username=postgres;Password=password",
"Redis": "localhost:6379"
},
"Authentication": {
"Authority": "https://your-auth-server.com",
"Audience": "integration-gateway-api"
},
"Providers": {
"Payment": {
"Name": "PaymentProvider",
"BaseUrl": "https://api.payment-provider.com",
"SandboxUrl": "https://sandbox.payment-provider.com",
"Authentication": {
"Type": "OAuth2",
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret",
"TokenEndpoint": "https://auth.payment-provider.com/oauth/token"
}
}
}
}- Clone o repositório
git clone <repository-url>
cd IntegrationGateway- Restaure as dependências
dotnet restore-
Configure as strings de conexão no
appsettings.json -
Execute a aplicação
dotnet run --project src/IntegrationGateway.Api- Acesse o Swagger
https://localhost:5001/swagger
POST /api/v1/integration/execute
Content-Type: application/json
Authorization: Bearer <token>
{
"clientId": "client-123",
"provider": "PaymentProvider",
"endpoint": "process-payment",
"method": "POST",
"payload": {
"amount": 100.00,
"currency": "BRL"
},
"useSandbox": true
}GET /api/v1/integration/providers
Authorization: Bearer <token>GET /api/v1/integration/health/{provider}
Authorization: Bearer <token>POST /api/v1/integration/batch
Content-Type: application/json
Authorization: Bearer <token>
[
{
"clientId": "client-123",
"provider": "PaymentProvider",
"endpoint": "process-payment",
"payload": { ... }
}
]O gateway utiliza JWT Bearer tokens para autenticação. Configure seu servidor de autorização no appsettings.json.
Headers de rate limiting são retornados automaticamente:
X-RateLimit-Limit: Limite por períodoX-RateLimit-Remaining: Requests restantesX-RateLimit-Reset: Timestamp do reset
/health- Status geral da aplicação/health/ready- Readiness probe/health/live- Liveness probe
Logs são escritos em formato estruturado usando Serilog:
- Console (desenvolvimento)
- Arquivos rotativos (produção)
- Integração com sistemas de observabilidade
Execute os testes unitários:
dotnet test- Threshold configurável de falhas
- Timeout de abertura ajustável
- Monitoramento de saúde automático
- Backoff exponencial
- Jitter para evitar thundering herd
- Retry apenas em erros transitórios
- Por cliente e endpoint
- Janelas deslizantes (minuto/hora/dia)
- Headers informativos na resposta
- Implementar versionamento de contratos
- Adicionar métricas com Prometheus
- Implementar distributed tracing
- Cache distribuído com invalidação inteligente
- Configuração dinâmica de providers
- Dashboard de monitoramento
- Alertas automáticos
- Backup e disaster recovery
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.