Uma API RESTful desenvolvida em ASP.NET Core para gerenciamento de pessoas e livros. Este projeto demonstra uma arquitetura limpa com separação de camadas, utilizando Entity Framework Core para persistência de dados e Serilog para logging.
- CRUD completo para entidades Person (Pessoa) e Book (Livro)
- Arquitetura em camadas: Controllers → Services → Repositories
- Persistência com SQL Server via Entity Framework Core
- Logging estruturado com Serilog
- Documentação detalhada no
MANUAL_DO_PROJETO.md
- .NET 10.0 ou superior
- SQL Server (ou SQL Server Express)
- Visual Studio 2022 ou VS Code com extensão C#
-
Clone o repositório:
git clone https://github.com/seu-usuario/RestWithASPNET10Erudio.git cd RestWithASPNET10Erudio -
Configure a string de conexão:
- Edite
appsettings.jsone ajuste a conexão com seu banco SQL Server:"SQLServerConnection": { "SQLServerConnectionString": "Server=SEU_SERVIDOR;Database=SEU_BANCO;User Id=SEU_USUARIO;Password=SUA_SENHA;TrustServerCertificate=true" }
- Edite
-
Restaure os pacotes:
dotnet restore
-
Execute as migrações para criar o banco:
dotnet ef database update
-
Execute a aplicação:
dotnet run
A API estará disponível em https://localhost:5001 (ou conforme launchSettings.json).
GET /api/person- Lista todas as pessoasGET /api/person/{id}- Obtém pessoa por IDPOST /api/person- Cria nova pessoaPUT /api/person- Atualiza pessoaDELETE /api/person/{id}- Deleta pessoa
GET /api/book- Lista todos os livrosGET /api/book/{id}- Obtém livro por IDPOST /api/book- Cria novo livroPUT /api/book- Atualiza livroDELETE /api/book/{id}- Deleta livro
Usando curl:
Criar uma pessoa:
curl -X POST "https://localhost:5001/api/person" \
-H "Content-Type: application/json" \
-d '{
"firstName": "João",
"lastName": "Silva",
"address": "Rua A, 123",
"gender": "Masculino"
}'Listar livros:
curl -X GET "https://localhost:5001/api/book"Para testes visuais, use o Postman ou importe o arquivo RestWithASPNET10Erudio.http.
RestWithASPNET10Erudio/
├── Controllers/ # Controladores da API
├── Application/ # Lógica de negócio e DTOs
│ ├── Services/ # Serviços (PersonService, BookService)
│ └── DTO/ # Data Transfer Objects
├── Domain/ # Entidades do domínio
├── Infrastructure/ # Configurações e repositórios
├── Migrations/ # Migrações do EF Core
├── appsettings.json # Configurações
├── Program.cs # Ponto de entrada
└── MANUAL_DO_PROJETO.md # Documentação detalhada
Projeto de teste:
RestWithASPNET10.Tests/(contém testes unitários associados à solução).
- A suíte de testes unitários está localizada em
RestWithASPNET10.Tests/dentro do mesmo repositório. - O teste
PersonConverterTests.ParseShouldConvertPersonDTOToPersonvalida a conversão dePersonDTOparaPerson. - A correção aplicada no teste foi instanciar
PersonConverterdiretamente, pois o xUnit não resolve automaticamente um parâmetro de construtor sem fixture configurado.
cd RestWithASPNET10.Tests
dotnet test RestWithASPNET10.Tests.csproj- ASP.NET Core 10.0 - Framework web
- Entity Framework Core - ORM para banco de dados
- SQL Server - Banco de dados
- Serilog - Logging estruturado
- Mapster - Mapeamento de objetos
- Newtonsoft.Json - Serialização JSON
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/nova-funcionalidade) - Commit suas mudanças (
git commit -am 'Adiciona nova funcionalidade') - Push para a branch (
git push origin feature/nova-funcionalidade) - Abra um Pull Request
Este projeto é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
Para uma explicação detalhada de cada classe, método e conceito, consulte o MANUAL_DO_PROJETO.md.