API para gerenciamento de clientes.
- Visual Studio 2022 ou superior
- .NET 8.0 SDK
- Clone o repositório
git clone https://github.com/seu-usuario/seu-repositorio.git
Selecione o arquivo customers-api.sln
- Acessar a pasta da Web Application
cd .\CustomersWebApp\
- Rodar comando docker
docker-compose up-d
obs: a API cria para você o database automaticamente.
A API possui as seguintes rotas principais:
Cria um novo cliente.
curl --location 'localhost:5242/api/customer' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "teste",
"phone": "(11) 00000-0000",
"addresses": [
{
"street": "Rua Engenheiro",
"state": "SP",
"city": "Sao Paulo"
}
],
"emails": [
{
"email_address": "[email protected]"
}
]
}
'
O primeiro email da lista de emails, e o primeiro endereço da lista de endereços, serão respectivamente o email principal e endereço principal atrelado ao cliente.
Obtém a lista de clientes.
Caso não seja informado os paramêtros pageNumber e pageSize, o valor padrão será, respectivamente, 1 e 5.
curl --location 'localhost:5242/api/customer?pageNumber=1&pageSize=5'
Response:
Obtém os detalhes de um cliente específico pelo ID.
curl --location 'localhost:5242/api/customer/011ffbb7-6470-4685-bc60-a8137799ff02'
obs: substituia o id pelo id do seu cliente.
Response:
O projeto segue a Clean Architecture com o propósito de manter uma separação clara de responsabilidade do sistema nas seguintes camadas:
- Camada de Domínio: Lógica de negócios e entidades.
- Camada de Aplicação: Casos de uso e lógica de aplicação.
- Camada de Infraestrutura: Acesso ao banco de dados.
- Camada de Apresentação: Contém as controllers.
O projeto aplica os seguintes princípios SOLID:
- SRP (Single Responsibility Principle): Cada classe tem uma única responsabilidade e é responsável por uma única parte da funcionalidade do sistema.
- DIP (Dependency Inversion Principle): As dependências são invertidas para depender das classes de abstrações (interfaces).