Skip to content

jamorim40/Curso-de-ASP.NETCore

Repository files navigation

RestWithASPNET10Erudio

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.

Funcionalidades

  • 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

Pré-requisitos

  • .NET 10.0 ou superior
  • SQL Server (ou SQL Server Express)
  • Visual Studio 2022 ou VS Code com extensão C#

Instalação

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/RestWithASPNET10Erudio.git
    cd RestWithASPNET10Erudio
  2. Configure a string de conexão:

    • Edite appsettings.json e 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"
      }
  3. Restaure os pacotes:

    dotnet restore
  4. Execute as migrações para criar o banco:

    dotnet ef database update
  5. Execute a aplicação:

    dotnet run

A API estará disponível em https://localhost:5001 (ou conforme launchSettings.json).

Como Usar

Endpoints da API

Person (Pessoa)

  • GET /api/person - Lista todas as pessoas
  • GET /api/person/{id} - Obtém pessoa por ID
  • POST /api/person - Cria nova pessoa
  • PUT /api/person - Atualiza pessoa
  • DELETE /api/person/{id} - Deleta pessoa

Book (Livro)

  • GET /api/book - Lista todos os livros
  • GET /api/book/{id} - Obtém livro por ID
  • POST /api/book - Cria novo livro
  • PUT /api/book - Atualiza livro
  • DELETE /api/book/{id} - Deleta livro

Exemplos de Requisições

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.

Estrutura do Projeto

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).

Testes

  • A suíte de testes unitários está localizada em RestWithASPNET10.Tests/ dentro do mesmo repositório.
  • O teste PersonConverterTests.ParseShouldConvertPersonDTOToPerson valida a conversão de PersonDTO para Person.
  • A correção aplicada no teste foi instanciar PersonConverter diretamente, pois o xUnit não resolve automaticamente um parâmetro de construtor sem fixture configurado.

Executar os testes

cd RestWithASPNET10.Tests
dotnet test RestWithASPNET10.Tests.csproj

Tecnologias Utilizadas

  • 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

Contribuição

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/nova-funcionalidade)
  3. Commit suas mudanças (git commit -am 'Adiciona nova funcionalidade')
  4. Push para a branch (git push origin feature/nova-funcionalidade)
  5. Abra um Pull Request

Licença

Este projeto é distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Documentação Adicional

Para uma explicação detalhada de cada classe, método e conceito, consulte o MANUAL_DO_PROJETO.md.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages