Exemplo do mesmo CRUD de usuarios da pasta python, agora implementado em .NET 10 com ASP.NET Core Minimal API, Swagger, persistencia em memoria, testes automatizados e arquitetura Ports and Adapters.
- .NET 10
- ASP.NET Core Minimal API
- Swagger UI
- xUnit
- Windows com PowerShell
- .NET SDK 10 instalado
Para validar a instalacao:
dotnet --list-sdksEstrutura da solucao:
src/
|-- Usuarios.Api
|-- Usuarios.Application
|-- Usuarios.Domain
`-- Usuarios.Adapters
tests/
`-- Usuarios.Tests
Responsabilidades:
Usuarios.Domain: entidade, excecoes e porta de repositorioUsuarios.Application: servico de aplicacao e comando de entradaUsuarios.Adapters: implementacao em memoria do repositorioUsuarios.Api: endpoints Minimal API, Swagger e composicao da aplicacaoUsuarios.Tests: testes de servico e de API
A camada HTTP da versao .NET agora usa Minimal API em vez de controllers MVC.
Isso significa que:
- os endpoints sao mapeados diretamente no startup da aplicacao
- o contrato HTTP continua o mesmo da versao anterior
- a estrutura continua separada por camadas, sem misturar regra de negocio com a borda HTTP
Arquivos principais da borda HTTP:
src/Usuarios.Api/Program.cssrc/Usuarios.Api/Endpoints/HealthEndpoints.cssrc/Usuarios.Api/Endpoints/UserEndpoints.cs
id: intnome: stringdtNascimento: datestatus: booltelefones: string[]
Na pasta dotnet:
dotnet restoredotnet run --project .\src\Usuarios.Api\Usuarios.Api.csprojPor padrao, usando o launchSettings.json atual, a API sobe em:
- API:
http://localhost:5266 - Swagger UI:
http://localhost:5266/swagger
Se a porta mudar, o dotnet run vai mostrar a URL correta no terminal.
dotnet build .\UsuariosApi.slnxdotnet test .\UsuariosApi.slnx --collect:"XPlat Code Coverage"Resultado esperado no estado atual do projeto:
- testes de servico
- testes de API
- 9 testes passando
GET /health/liveGET /health/readyPOST /usuariosGET /usuariosGET /usuarios/{usuarioId}PUT /usuarios/{usuarioId}DELETE /usuarios/{usuarioId}
{
"id": 1,
"nome": "Carlos",
"dtNascimento": "1992-03-14",
"status": true,
"telefones": [
"11911112222",
"1122223333"
]
}O workflow fica em .github/workflows/ci.yml e executa:
- restore
- build
- testes
- A persistencia e totalmente em memoria.
- Ao reiniciar a aplicacao, os dados sao perdidos.
- O endpoint
/health/readyretorna503se o servico principal nao estiver registrado.
dotnet restore
dotnet build .\UsuariosApi.slnx
dotnet test .\UsuariosApi.slnx
dotnet run --project .\src\Usuarios.Api\Usuarios.Api.csproj