API RESTful completa para sistema de apostas esportivas desenvolvida em .NET 9, implementando arquitetura em camadas com foco em boas práticas de desenvolvimento, autenticação JWT, CRUD completo, pesquisas LINQ avançadas e integração com APIs externas.
Felipe Terra (RM: 99405)
Pedro Bicas (RM: 99534)
Gabriel Doms (RM: 98630)
Lucas Vassão (RM: 98607)
Bryan Willian (RM: 551305)
A solução está organizada em múltiplos projetos seguindo o padrão de arquitetura em camadas:
BetAware/
├── 📁 BetAware.Api/ # Controllers e configuração da API
├── 📁 BetAware.Business/ # Lógica de negócio e serviços
├── 📁 BetAware.Data/ # Entity Framework e acesso a dados
├── 📁 BetAware.Model/ # Modelos e DTOs
└── 📁 docs/ # Documentação e diagramas
- BetAware.Api – Exposição dos endpoints REST, configuração da aplicação e documentação Swagger
- BetAware.Business – Implementação das regras de negócio, serviços e interfaces
- BetAware.Data – Contexto do Entity Framework, configuração do banco e migrações
- BetAware.Model – Entidades de domínio, DTOs e validações
- .NET 9 - Framework principal
- ASP.NET Core Web API - Framework web
- Entity Framework Core - ORM para acesso a dados
- SQL Server - Banco de dados principal
- JWT Bearer - Autenticação e autorização
- Swagger/OpenAPI - Documentação interativa da API
- BCrypt - Hash seguro de senhas
- LINQ - Consultas avançadas
- HttpClient - Integração com APIs externas
- .NET 9 SDK
- SQL Server (LocalDB ou instância completa)
- Visual Studio 2022 ou VS Code
- Git
- Clone o repositório
git clone https://github.com/pedrobicas/BetAwareAPI.NET.git
cd BetAwareAPI.NET- Restaure as dependências
dotnet restore- Configure a string de conexão
Edite o arquivo
appsettings.jsonemBetAware.Api:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=BetAwareDb;Trusted_Connection=true;MultipleActiveResultSets=true"
}
}- Execute as migrações do banco
dotnet ef database update --project BetAware.Data --startup-project BetAware.Api- Execute a aplicação
dotnet run --project BetAware.Api- Acesse a documentação
- Swagger UI:
https://localhost:7000/swagger - API Base:
https://localhost:7000/
A API utiliza JWT Bearer Token para autenticação. Siga os passos:
POST /v1/auth/register
Content-Type: application/json
{
"nome": "João Silva",
"username": "joao",
"email": "joao@email.com",
"senha": "MinhaSenh@123",
"perfil": "USER"
}POST /v1/auth/login
Content-Type: application/json
{
"username": "joao",
"senha": "MinhaSenh@123"
}Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...GET /v1/apostas- Listar apostas do usuário logadoPOST /v1/apostas- Criar nova apostaGET /v1/apostas/{id}- Obter aposta específicaPUT /v1/apostas/{id}- Atualizar apostaDELETE /v1/apostas/{id}- Deletar apostaGET /v1/apostas/pesquisar- Pesquisa avançada com filtros
GET /v1/external/cep/{cep}- Consultar endereço por CEPGET /v1/external/cotacao- Obter cotação de moedasGET /v1/external/jogos- Listar jogos esportivos disponíveisGET /v1/external/tempo/{cidade}- Previsão do tempoGET /v1/external/dashboard/{cep}- Dashboard com dados integrados
GET /v1/usuarios- Listar todos os usuáriosGET /v1/usuarios/{id}- Obter usuário específicoPUT /v1/usuarios/{id}- Atualizar usuárioDELETE /v1/usuarios/{id}- Deletar usuárioGET /v1/usuarios/pesquisar- Pesquisar usuários
{
"categoria": "FUTEBOL",
"jogo": "Flamengo vs Palmeiras",
"valor": 50.00,
"resultado": "PENDENTE",
"data": "2024-12-20T20:00:00"
}GET /v1/apostas/pesquisar?categoria=FUTEBOL&valorMinimo=10&valorMaximo=100&page=1&pageSize=10&orderBy=Data&ascending=falseGET /v1/external/cep/01310-100- Autenticação JWT com tokens seguros e expiração configurável
- Autorização baseada em roles (USER/ADMIN)
- Validação rigorosa de dados com Data Annotations
- Proteção contra SQL Injection via Entity Framework
- CORS configurado para ambientes específicos
- Senhas hasheadas com BCrypt para máxima segurança
- Validação de entrada em todos os endpoints
- Acesse
https://localhost:7000/swagger - Registre um usuário via endpoint de registro
- Faça login para obter o token JWT
- Clique em "Authorize" e insira:
Bearer {seu_token} - Teste todos os endpoints protegidos
- ✅ Registro e login de usuários
- ✅ CRUD completo de apostas
- ✅ Pesquisas com diferentes filtros
- ✅ Integração com APIs externas
- ✅ Autorização de endpoints administrativos
- Id, Nome, Username, Email, Senha, Perfil, DataCriacao
- Id, UsuarioId, Categoria, Jogo, Valor, Resultado, Data
- Um usuário pode ter muitas apostas (1:N)
- Chaves estrangeiras configuradas com Entity Framework
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/NovaFuncionalidade) - Commit suas mudanças (
git commit -m 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/NovaFuncionalidade) - Abra um Pull Request


