API desenvolvida em .NET 9.0 utilizando a abordagem Minimal APIs para gerenciamento de veículos e administradores, baseada no bootcamp da DIO.
Repositório original: https://github.com/digitalinnovationone/minimal-api/
- Containerização com Docker para o banco de dados
- Implementação de BCrypt para hash e verificação de senhas
- Refatoração do código com melhor organização de serviços
- Separação da regra de negócio das rotas
- Testes unitários usando Moq para simulação de serviços
- Implementação de InMemoryDatabase para testes de integração
- .NET 9.0
- Entity Framework Core
- MySQL
- BCrypt.NET
- JWT Authentication
- MSTest e Moq (para testes)
- Docker
MinimalApi/
├── src/
│ ├── Application/
│ │ ├── Services/
│ │ └── Validators/
│ ├── Domain/
│ │ ├── DTO/
│ │ ├── Entities/
│ │ ├── Enums/
│ │ └── Interfaces/
│ ├── Extensions/
│ │ ├── Endpoints
│ │ └── Services
│ ├── Migrations/
│ └── Infra/
│ ├── Data/
│ └── Security/
└── tests/
├── Application/
├── Domain/
└── Integration/
GET api/swagger- Swagger
GET api/admin/admins- Listar todos administradoresGET api/admin/{id}- Buscar administrador por IDPOST api/admin/register- Cadastro de administradorPOST api/admin/login- Login de administrador
GET api/vehicle/- Listar todos os veículosPOST api/vehicle/register- Cadastro de veículoGET api/vehicle/{id}- Buscar veículo por IDPUT api/vehicle/{id}- Atualizar veículoDELETE api/vehicle/{id}- Remover veículo
{
"Id": 1,
"Brand": "Test Brand",
"Model": "Test Model",
"Year": 2018,
}O sistema já vem com dois usuários pré-configurados:
{
"email": "admin@admin.com",
"password": "admin"
}{
"email": "ed@ed.com",
"password": "editor"
}Acesso via: http://localhost:5030/api/admin/login
- Por padrão o banco de dados vai rodar com essas credenciais, se desejar mudar, configure os seguintes arquivos
docker-compose.yml
services:
db:
image: mysql
restart: always
environment:
- MYSQL_USER=user
- MYSQL_PASSWORD=secretpass
- MYSQL_DATABASE=minimalapidb
- MYSQL_ROOT_PASSWORD=rootpass
ports:
- "3306:3306"
volumes:
- db-volume:/var/lib/mysql
volumes:
db-volume:- E no arquivo
appsettings.Development.json
"ConnectionStrings": {
"db": "Server=localhost;Port=3306;Database=minimalapi;User=user;Password=secretpass;"
}- Clone o repositório:
git clone https://github.com/bxzzxnx/minimal_api_dio
cd minimal_api_dio- Restaure as dependências:
dotnet restore- Inicie o container do banco de dados:
docker-compose up -d- Navegue até a pasta e execute as migrações:
cd src/api
dotnet ef database update- Execute o projeto:
dotnet runPara executar os testes rode
cd minimal_api_dio/Tests
dotnet test