Skip to content

trin-daniel/AspNetCoreCqrsPattern

Repository files navigation

Web API - ASP.NET Core com CQRS Pattern

  • Este projeto tem como objetivo servir como uma prova de conceito para a implementação do padrão CQRS (Command Query Responsibility Segregation) em uma Web API que segue os princípios da arquitetura limpa.

Configurações Iniciais

  1. Para executar o projeto em ambiente local, você precisa ter o Docker instalado em sua máquina. Vou assumir que você já o tenha instalado.
  2. Após confirmar a presença do Docker em seu ambiente local, realize um git clone no repositório.
  3. Depois que o projeto for clonado, acesse a pasta raiz (onde está localizado o arquivo .sln) e execute dotnet restore para restaurar as dependências. Em seguida, execute docker compose up --build.
  4. Após executar o passo anterior, a Web API estará disponível para uso, contendo 30 registros iniciais de teste. Você pode testá-la acessando sua documentação, ou testando os endpoints listados na seção Endpoints.

Endpoints

  • Obter um membro por ID:
curl http://localhost:5033/api/v1/members/{memberId}
  • Obter todos os membros (consulta paginada):
curl 'http://localhost:5033/api/v1/members?pageNumber=1&pageSize=10'
  • Adicionar um novo membro:
curl http://localhost:5033/api/v1/members \
  --request POST \
  --header 'Content-Type: application/json' \
  --data '{
    "firstName": "",
    "lastName": "",
    "gender": "",
    "email": ""
  }'
  • Atualizar um membro:
curl http://localhost:5033/api/v1/members/{memberId} \
  --request PUT \
  --header 'Content-Type: application/json' \
  --data '{
  "memberId": "",
  "firstName": "",
  "lastName": "",
  "gender": "",
  "email": ""
}'
  • Remover um membro:
curl http://localhost:5033/api/v1/members/{memberId} --request DELETE

Bibliotecas Utilizadas

  • Microsoft.AspNetCore.OpenApi 9.0.11
  • Microsoft.EntityFrameworkCore.Design 9.0.11
  • Microsoft.EntityFrameworkCore.SqlServer 9.0.11
  • Microsoft.EntityFrameworkCore.Tools 9.0.11
  • Scalar.AspNetCore 2.10.1
  • FluentValidation 12.1.0
  • FluentValidation.DependencyInjectionExtensions 12.1.0
  • MediatR 12.5.0 (última versão sob a licença Apache 2.0)

Consideracoes finais

  • Embora o foco tenha sido a implementação do padrão CQRS, a decisão de impor um nível de qualidade mais elevado, utilizando alguns padrões e técnicas de projeto, pode ser considerada excessiva para uma implementação que possui apenas uma entidade e nenhuma regra de negócio. Ainda assim, considerei que era uma boa oportunidade para exercitar meu conhecimento nessas técnicas.

About

A proof of concept for the CQRS pattern in ASP.NET Core.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published