Skip to content

Andre220/AspNetCore_RestAPI_Template

Repository files navigation

ASP.NET Core REST API Template

Um template moderno de API REST usando ASP.NET Core 9.0 com Clean Architecture, Docker e API Versioning.

🚀 Características

  • 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

📁 Estrutura do Projeto

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

🛠️ Pré-requisitos

🏃 Como Executar

Localmente (sem Docker)

dotnet restore
dotnet build
cd src/Template.ApiRest
dotnet run

Acesse: http://localhost:5xxx (a porta será exibida no console)

Com Docker (Hot Reload)

docker-compose up --build

Acesse: http://localhost:5000

🐛 Debug

Debug Local

Pressione F5 no VS Code e selecione .NET Core Launch (web)

Debug no Docker

  1. Certifique-se que o container está rodando: docker-compose up
  2. Pressione F5 e selecione Docker .NET Attach (Hot Reload)
  3. Coloque breakpoints e teste!

Nota: Hot reload não funciona quando o debugger está anexado. Para editar código, desanexe o debugger (Shift+F5).

📝 Endpoints de Exemplo

Random Names (Feature-based)

  • GET /api/features/v1/randomnames/random - Retorna um nome aleatório

Random Names (Resource-based)

  • GET /api/resource/v1/randomnames/random - Retorna um nome aleatório

🧪 Testes

# 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.IntegrationTests

📦 Pacotes Principais

  • Microsoft.AspNetCore.OpenApi - Suporte OpenAPI/Swagger
  • Asp.Versioning.Mvc - Versionamento de API

🔧 Configuração

Variáveis de Ambiente

ASPNETCORE_ENVIRONMENT=Development
ASPNETCORE_URLS=http://+:5000

API Versioning

A 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")]

🐳 Docker

Comandos Úteis

# Subir containers
docker-compose up

# Rebuildar e subir
docker-compose up --build

# Ver logs
docker-compose logs -f api

# Parar containers
docker-compose down

📚 Estrutura de Pastas Alternativas

O projeto demonstra duas abordagens de organização:

  1. Por Feature (FolderStructureByFeature/): Agrupa por funcionalidade
  2. Por Tipo de Recurso (FolderStructureByResourceType/): Separação tradicional (Controllers, DTOs, etc)

Escolha a que melhor se adapta ao seu projeto!

🤝 Contribuindo

Sinta-se à vontade para abrir issues e pull requests!

📄 Licença

Este projeto é um template de código aberto para uso livre.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published