- 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.
- 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.
- Após confirmar a presença do Docker em seu ambiente local, realize um
git cloneno repositório. - Depois que o projeto for clonado, acesse a pasta raiz (onde está localizado o arquivo
.sln) e executedotnet restorepara restaurar as dependências. Em seguida, executedocker compose up --build. - 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.
- 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- 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)
- 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.