Este projeto é uma Minimal API desenvolvida com .NET Core que implementa autenticação baseada em JWT (JSON Web Token) e permite o gerenciamento de recursos como administradores e veículos. Ele utiliza práticas modernas de desenvolvimento backend, incluindo autorização baseada em perfis, validações personalizadas e integração com banco de dados relacional.
A API foi projetada para atender sistemas que exigem segurança, escalabilidade e extensibilidade. Ideal para aplicações que precisam de APIs RESTful para operações de CRUD com autenticação segura.
-
Autenticação e Autorização:
- JWT Token para autenticação.
- Suporte a perfis de usuários (ex.:
Adm
,Editor
). - Controle de acesso baseado em roles.
-
Gerenciamento de Administradores:
- Login e geração de token JWT.
- Listagem, busca, criação e exclusão de administradores.
- Endpoints protegidos por autorização (somente usuários com perfil "Adm" têm acesso).
-
Gerenciamento de Veículos:
- Endpoints para cadastro, edição, remoção e listagem de veículos.
- Validação de dados (ex.: ano do veículo não pode ser anterior a 1950).
- Controle de acesso baseado em roles (ex.: apenas "Adm" pode deletar veículos).
-
Swagger UI:
- Documentação interativa gerada automaticamente para testar os endpoints.
- Integração com autenticação JWT para testar endpoints protegidos.
-
Validações de Dados:
- Respostas detalhadas para erros de validação de campos obrigatórios.
-
Conexão com Banco de Dados:
- Integração com MySQL usando Entity Framework Core.
- Suporte para migrações de banco de dados.
- .NET Core (Minimal API)
- C#
- Entity Framework Core (ORM)
- Autenticação JWT
- Swagger para documentação interativa
- MySQL como banco de dados relacional
- CORS para controle de acesso
- Dependency Injection para desacoplamento de serviços
- .NET 7 SDK ou superior.
- Banco de dados MySQL configurado.
- Ferramentas como Visual Studio ou Visual Studio Code.
-
Clone o repositório:
git clone https://github.com/seu-usuario/seu-repositorio.git
-
Configure o arquivo
appsettings.json
com as informações de conexão do banco de dados e a chave JWT:{ "ConnectionStrings": { "MySql": "Server=localhost;Database=MinimalApiDb;User=root;Password=sua_senha" }, "Jwt": { "Key": "sua-chave-secreta" } }
-
Aplique as migrações para o banco de dados:
dotnet ef database update
-
Rode a aplicação:
dotnet run
-
Acesse o Swagger na URL:
http://localhost:5000
POST /administradores/login
Body:
{
"email": "admin@exemplo.com",
"senha": "senha123"
}
Resposta (200 OK):
{
"email": "admin@exemplo.com",
"perfil": "Adm",
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
- Sinta-se à vontade para abrir issues ou enviar pull requests com melhorias, correções ou sugestões!