Um template moderno de API REST usando ASP.NET Core 9.0 com Clean Architecture, Docker e API Versioning.
- ✅ ASP.NET Core 9.0
- ✅ Clean Architecture (Domain, Application, Infrastructure, API)
- ✅ API Versioning com
Asp.Versioning.Mvc - ✅ Docker com hot reload para desenvolvimento
- ✅ VS Code debug configurado
- ✅ OpenAPI/Swagger integrado
- ✅ Estrutura organizada por features e por tipo de recurso
AspNetCore_RestAPI_Template/
├── src/
│ ├── Template.ApiRest/ # Camada de apresentação (API)
│ ├── Template.Application/ # Lógica de aplicação
│ ├── Template.Domain/ # Entidades e regras de negócio
│ └── Template.Infrastructure/ # Acesso a dados e serviços externos
├── tests/
│ ├── Template.UnitTests/ # Testes unitários
│ └── Template.IntegrationTests/ # Testes de integração
├── docker-compose.yml # Orquestração Docker
├── Dockerfile # Imagem Docker para desenvolvimento
└── AspNetCore_RestAPI_Template.sln
- .NET 9.0 SDK
- Docker Desktop
- Visual Studio Code (recomendado)
dotnet restore
dotnet build
cd src/Template.ApiRest
dotnet runAcesse: http://localhost:5xxx (a porta será exibida no console)
docker-compose up --buildAcesse: http://localhost:5000
Pressione F5 no VS Code e selecione .NET Core Launch (web)
- Certifique-se que o container está rodando:
docker-compose up - Pressione
F5e selecioneDocker .NET Attach (Hot Reload) - Coloque breakpoints e teste!
Nota: Hot reload não funciona quando o debugger está anexado. Para editar código, desanexe o debugger (Shift+F5).
GET /api/features/v1/randomnames/random- Retorna um nome aleatório
GET /api/resource/v1/randomnames/random- Retorna um nome aleatório
# Executar todos os testes
dotnet test
# Executar apenas testes unitários
dotnet test tests/Template.UnitTests
# Executar apenas testes de integração
dotnet test tests/Template.IntegrationTestsMicrosoft.AspNetCore.OpenApi- Suporte OpenAPI/SwaggerAsp.Versioning.Mvc- Versionamento de API
ASPNETCORE_ENVIRONMENT=Development
ASPNETCORE_URLS=http://+:5000A aplicação está configurada com versionamento de API:
- Versão padrão:
1.0 - Formato da rota:
/api/{area}/v{version}/{controller}
Para criar uma nova versão, adicione o atributo:
[ApiVersion("2.0")]# Subir containers
docker-compose up
# Rebuildar e subir
docker-compose up --build
# Ver logs
docker-compose logs -f api
# Parar containers
docker-compose downO projeto demonstra duas abordagens de organização:
- Por Feature (
FolderStructureByFeature/): Agrupa por funcionalidade - Por Tipo de Recurso (
FolderStructureByResourceType/): Separação tradicional (Controllers, DTOs, etc)
Escolha a que melhor se adapta ao seu projeto!
Sinta-se à vontade para abrir issues e pull requests!
Este projeto é um template de código aberto para uso livre.