API de cotações de criptmoedas construída com ASP.NET Minimal APIs e integração em tempo real com CoinGecko.
Licença: MIT — Open source, use livremente! 📜
MyCryptoApi é uma API leve e moderna que demonstra as melhores práticas com Minimal APIs do ASP.NET Core:
✅ Minimal APIs — Sintaxe simplificada do ASP.NET
✅ Cotações em tempo real via CoinGecko (Bitcoin, Ethereum)
✅ Banco de dados SQLite com Entity Framework Core
✅ OpenAPI/Swagger com Scalar UI
✅ C# moderno (.NET 8+, records, nullable types)
✅ Pronto para produção — Zero bloat, máximo performance
- GET / — Redireciona para documentação Scalar
- GET /precos — Retorna cotações de BTC/ETH em USD
- GET /openapi/v1.json — Schema OpenAPI
- Scalar UI — Documentação interativa e elegante
- SQLite integrado — Banco local sem configuração
- HttpClient factory — Requisições eficientes
- .NET SDK 8.0 ou superior (Download)
- Git (para versionamento)
- Internet (para chamar CoinGecko API)
Verificar instalação:
dotnet --versionMinimal-APIs-.NET/
├── Program.cs # Entry point com todos endpoints
├── MyCryptoApi.csproj # Configuração do projeto
├── MyCryptoApi.sln # Solução Visual Studio
│
├── Properties/
│ └── launchSettings.json # Configuração de launch
│
├── appsettings.json # Configurações gerais
├── appsettings.Development.json # Config development
├── MyCryptoApi.http # Testes de endpoints
│
├── .github/workflows/ # CI/CD
├── .gitignore
├── .editorconfig
├── LICENSE
└── README.md
git clone https://github.com/RafaelBatistaDev/Minimal-APIs-.NET.git
cd Minimal-APIs-.NETdotnet restoredotnet runA API estará disponível em: https://localhost:5001
Scalar UI: https://localhost:5001/scalar/v1
Obter Preços (BTC/ETH):
curl https://localhost:5001/precosResponse:
{
"btc": 45000.00,
"eth": 2500.00
}dotnet publish -c Release -o ./publish| Pacote | Versão | Propósito |
|---|---|---|
Microsoft.AspNetCore.OpenApi |
8.0+ | OpenAPI/Swagger |
Scalar.AspNetCore |
1.0+ | Documentação UI (alternativa elegante ao Swagger) |
Microsoft.EntityFrameworkCore.Sqlite |
8.0+ | Banco de dados |
System.Net.Http.Json |
8.0+ | Integração JSON com HTTP |
GET / HTTP/1.1
Host: localhost:5001Redireciona para: Scalar UI (documentação visual)
GET /precos HTTP/1.1
Host: localhost:5001
Accept: application/jsonResponse (200 OK):
{
"btc": 45000.00,
"eth": 2500.00
}Response (erro - 500):
{
"error": "Falha ao buscar preços da CoinGecko"
}GET /precos
↓
HttpClientFactory cria cliente
↓
Headers incluem "User-Agent: CryptoApp"
↓
Chamada: https://api.coingecko.com/api/v3/simple/price
↓
Parse JSON com CoinGeckoDto record
↓
200 OK com { BTC, ETH }
A API chamada:
https://api.coingecko.com/api/v3/simple/price?ids=bitcoin,ethereum&vs_currencies=usd
Resposta bruta:
{
"bitcoin": { "usd": 45000.00 },
"ethereum": { "usd": 2500.00 }
}Abra o arquivo MyCryptoApi.http na IDE e execute os testes visual.
# Teste de conectividade
curl -k https://localhost:5001/
# Teste de preços
curl -k https://localhost:5001/precos | jqdotnet new xunit -n MyCryptoApi.Tests
dotnet add MyCryptoApi.Tests reference MyCryptoApi
dotnet testdotnet publish -c Release
az webapp up --name mycryptoapi --resource-group mygroupFROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY . .
RUN dotnet publish -c Release -o /app
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /app
COPY --from=build /app .
EXPOSE 80
ENTRYPOINT ["dotnet", "MyCryptoApi.dll"]dotnet publish -c Release -o ./publish
# Deploy manual ou via CLIContribuições são bem-vindas! Por favor:
- Fork o repositório
- Crie um branch (
git checkout -b feature/NovaCriptmoeda) - Commit as mudanças (
git commit -m 'feat: adiciona cotação Litecoin') - Push para o branch (
git push origin feature/NovaCriptmoeda) - Abra uma Pull Request
- ✅ C# moderno (C# 12+)
- ✅ Minimal APIs com sintaxe clara
- ✅ Records para DTOs
- ✅ Async/await
- ✅ Testes unitários
- ✅ Documentação completa
Este projeto é 100% Open Source sob a licença MIT.
- ✅ Usar em projetos pessoais e comerciais
- ✅ Modificar e adaptar livremente
- ✅ Distribuir obras derivadas
- ✅ Usar privadamente
⚠️ Incluir cópia da licença MIT⚠️ Indicar mudanças significativas
- ✅ Sem chaves de API no repositório
- ✅ Validação de entrada
- ✅ HTTPS em produção
- ✅ User-Agent configurado (cortesia com CoinGecko)
- ✅ Code aberto para auditoria
- Suporte a mais criptmoedas (Litecoin, Ripple, etc)
- Cache com Redis
- Rate limiting
- Histórico de preços
- Alertas por email
- Banco de dados PostgreSQL
- Testes de integração
- Docker Compose
Última atualização: 4 de abril de 2026
Versão: 1.0.0
Licença: MIT
Status: Production Ready ✅
Rafael Batista
🔗 GitHub: @RafaelBatistaDev
💼 LinkedIn: Seu Perfil