Este projeto é uma API de gestão de clientes desenvolvida com Spring Boot. A API permite operações CRUD (Criar, Ler, Atualizar, Deletar) sobre entidades de clientes, além de oferecer suporte para manipulação de múltiplos endereços para cada cliente. Este projeto inclui tratamento de exceções, validações de entrada de dados e documentação de API com Swagger.
- Criação, leitura, atualização e exclusão de clientes. 🆕
- Adição e gerenciamento de múltiplos endereços para cada cliente. 🏠
- Validação de dados de entrada. ✔️
- Paginação na listagem de clientes. 📄
- Tratamento de exceções global. 🛡️
- Documentação automática da API com Swagger. 📚
- Persistência de dados com o banco de dados em memória H2. 💾
- Spring Boot - Framework para desenvolvimento de aplicações Spring.
- Spring Data JPA - Para persistência de dados e ORM.
- H2 Database - Banco de dados SQL em memória.
- Springfox Swagger 2 - Para documentação da API.
- JDK 1.8 ou superior.
- Maven 3.3+ ou Gradle 4+.
-
Clone o repositório
git clone https://github.com/seu-usuario/seu-repositorio.git cd seu-repositorio
-
Compile e execute a aplicação usando Maven
mvn clean install mvn spring-boot:run
Ou usando Gradle:
./gradlew build
./gradlew bootRun
-
Acesse a aplicação 🌐 A API estará disponível em
http://localhost:8080
. -
Acesse a documentação da Swagger UI 📄 A documentação da API pode ser acessada em
http://localhost:8080/swagger-ui.html
.
A API de gestão de clientes oferece vários endpoints para operações CRUD em clientes e seus endereços. Abaixo estão os detalhes de cada endpoint disponível:
-
POST /api/customers
- Descrição: Cria um novo cliente.
- Corpo da Requisição:
{ "name": "Nome do Cliente", "email": "[email protected]" }
- Resposta de Sucesso: Retorna o cliente criado com status 200 OK.
-
GET /api/customers/{id}
- Descrição: Obtém detalhes de um cliente específico.
- Parâmetros:
id
: ID do cliente.
- Resposta de Sucesso: Retorna os detalhes do cliente com status 200 OK.
-
PUT /api/customers/{id}
- Descrição: Atualiza um cliente existente.
- Parâmetros:
id
: ID do cliente.
- Corpo da Requisição:
{ "name": "Nome Atualizado", "email": "[email protected]" }
- Resposta de Sucesso: Retorna o cliente atualizado com status 200 OK.
-
DELETE /api/customers/{id}
- Descrição: Exclui um cliente.
- Parâmetros:
id
: ID do cliente.
- Resposta de Sucesso: Retorna status 204 No Content.
-
GET /api/customers
- Descrição: Lista todos os clientes com suporte à paginação.
- Parâmetros de Query:
page
: Número da página (opcional, padrão é 0).size
: Tamanho da página (opcional, padrão é 10).
- Resposta de Sucesso: Retorna uma lista paginada de clientes com status 200 OK.
-
POST /api/customers/{customerId}/addresses
- Descrição: Adiciona um endereço a um cliente existente.
- Parâmetros:
customerId
: ID do cliente.
- Corpo da Requisição:
{ "street": "Rua dos Bobos", "city": "Cidade Exemplo" }
- Resposta de Sucesso: Retorna o endereço criado com status 200 OK.
-
GET /api/customers/{customerId}/addresses
- Descrição: Lista todos os endereços de um cliente específico.
- Parâmetros:
customerId
: ID do cliente.
- Resposta de Sucesso: Retorna uma lista de endereços com status 200 OK.
A API inclui tratamento global de exceções para capturar e responder adequadamente a erros comuns, como recursos não encontrados e violações de restrição. Erros são retornados com mensagens claras e códigos de status apropriados para facilitar a depuração e o uso da API.