Este projeto de API tem como objetivo gerenciar informações de clientes e endereços utilizando.
- Foi adicionado ao projeto o arquivo Teste api desafio.postman_collection.json contendo os testes de todas as funções da classe controller
- Optei por não criar o metodo de atualizar o endereço do cliente, ao inves disso fazer o processo de excluir o endereço e criar um novo
- Na função updateCliente() da classe controller decidi não utilizar a anotação @Valid para caso queira atualizar somente um campo do cliente não precisar preencher todos os outros campos,na função a validação será feita na função usada da classe clienteService
- A função getClienteEndereco(@PathVariable Long clienteId, @PathVariable Long enderecoId) da classe controller busca no banco de dados um endereco com id informado associado ao cliente, caso não haja, retorna o erro EndrecoNotFound ou ClienteNotFound se não tiver nenhum cliente com o id passado
A API oferece as seguintes funcionalidades:
- Cadastro de clientes
- Cadastro de endereços para um cliente
- Consulta de clientes por id
- Consulta de endereços por id
- Consulta de todos os endereços de um cliente
- Consulta de todos os endereços no geral
- Consulta de todos os clientes
- Atualização de endereco principal
- Atualização de data de nascimento, nome ou endreço de clientes(pode ser atualizado um ou mais campos usando a mesma função)
- Exclusão de clientes
- Exclusão de endereços(pelo id do cliente+id do enredereço ou so com o id do endereco)
As principais tecnologias utilizadas neste projeto foram:
- Java
- JUnit
- Spring Framework
- H2 database
Para executar o projeto, siga os seguintes passos:
- Clone o repositório:
git clone https://github.com/arthur-j1/desafio-artornattus.git
- Acesse o diretório do projeto:
cd desafio-artornattus
- Abra o projeto em sua IDE de preferência
- Execute a classe
DesafioArtornattusApplication
para iniciar a aplicação - Caso queira executar os testes de reposta das url's basta instalar o postman na sua máquina e importar o arquivo Teste api desafio.postman_collection.json no postman
Método | Rota | Descrição |
---|---|---|
GET | /clientes | Retorna a lista de todos os clientes cadastrados. |
GET | /enderecos | Retorna a lista de todos os endereços cadastrados. |
GET | /cliente/{id} | Retorna um cliente específico por ID. |
GET | /cliente/{id}/enderecos | Retorna a lista de endereços de um cliente específico. |
GET | /endereco/{id} | Retorna um endereço específico por ID. |
GET | /{idCliente}/buscar-endereco/{idEndereço} | Retorna um endereço específico por ID dentro dos endereços do cliente, caso não exista endereço ou cliente com esse ID é retornada uma exceção personalizada. |
GET | /{idCliente}/endereco/principal | Retorna o endereço principal do cliente dono do ID. |
POST | / | Cria um novo cliente (path: localhost:8080/). |
POST | /{idCliente}/endereco | Cria um novo endereco relacionado ao cliente dono do ID. |
POST | /{idCliente}/endereco-principal/{idEndereço} | Busca cliente e endereco pelo ID de ambos, e define o endereço principal do cliente como o endereço do id passado como parametro, caso não exista o ID do endereco na lista de endereços do cliente retorna uma excecao personalizada, impedindo que o cliente altere informações de outro cliente. |
PUT | /clientes/{id} | Atualiza as informações de um cliente específico, usando como parametros as informações passadas no corpo da requisição(pode ser atualizado um ou mais endereço usando a mesma função) |
DELETE | /{id} | Deleta um cliente específico |
DELETE | /enderecos/{id} | Deleta um endereço específico |
DELETE | /{idCliente}/delete-endereco/{idEndereço} | Deleta o endereço específico apenas se ele estiver na lista de endereços do cliente passado como ID |