An open API service indexing awesome lists of open source software.

https://github.com/marcosfshirafuchi/devsuperior-java-spring-professional-desafio-03

DEVSUPERIOR : Java Spring Professional - Desafio 03
https://github.com/marcosfshirafuchi/devsuperior-java-spring-professional-desafio-03

desenvolvimento-java devsuperior h2-database java maven maven-pom nelio-alves nelioalves poo postman postman-api postman-test spring spring-boot springboot springdata-jpa springdatajpa

Last synced: about 1 month ago
JSON representation

DEVSUPERIOR : Java Spring Professional - Desafio 03

Awesome Lists containing this project

README

        

# image-2024-07-01-T11-45-10-371-Z Java Spring Professional - Desafio 03

#### Desenvolvido na linguagem Java por:
- [Marcos Shirafuchi](https://github.com/marcosfshirafuchi)
## Formação Desenvolvedor Moderno Módulo: Back end
Capítulo: API REST, camadas, CRUD, exceções, validações

## DESAFIO: CRUD de clientes

Você deverá entregar um projeto Spring Boot contendo um CRUD completo de web services REST para
acessar um recurso de clientes, contendo as cinco operações básicas aprendidas no capítulo:
- Busca paginada de recursos
- Busca de recurso por id
- Inserir novo recurso
- Atualizar recurso
- Deletar recurso

O projeto deverá estar com um ambiente de testes configurado acessando o banco de dados H2, deverá usar
Maven como gerenciador de dependência, e Java como linguagem.


Um cliente possui nome, CPF, renda, data de nascimento, e quantidade de filhos. A especificação da
entidade Client é mostrada a seguir (você deve seguir à risca os nomes de classe e atributos mostrados no
diagrama):


image-2024-07-12-T00-12-28-278-Z


Seu projeto deverá fazer um seed de pelo menos 10 clientes com dados SIGNIFICATIVOS (não é para
usar dados sem significado como “Nome 1”, “Nome 2”, etc.).


Seu projeto deverá tratar as seguintes exceções:
- Id não encontrado (para GET por id, PUT e DELETE), retornando código 404.
- Erro de validação, retornando código 422 e mensagens customizada para cada campo inválido. As
regras de validação são:
- Nome: não pode ser vazio
- Data de nascimento: não pode ser data futura (dica: use @PastOrPresent)



- Atenção: crie um novo projeto para este trabalho. Não é para simplesmente acrescentar a classe
- Atenção: lembre-se de que por padrão a JPA transforma nomes de atributos em camelCase para
snake_case, como foi o caso do campo imgUrl das aulas, que no banco de dados tinha o nome
img_url. Assim, o campo birthDate acima será criado no banco de dados como birth_date, então
seu script SQL deverá seguir este padrão.

- Atenção: cuidado para não salvar no seu projeto arquivos e pastas que não devem ser salvas no Git,
tais como a pasta .metadata do Eclipse ou .idea do Intellij.

## Como o trabalho será corrigido?
1) Importação do projeto

O professor deverá ser capaz de fazer um simples clone do projeto Github, e importar e executar o mesmo na
IDE sem necessidade de qualquer configuração especial diferente daquelas das aulas.


2) Testes manuais no Postman

O professor já terá preparado em seu computador as requisições Postman abaixo. Todas elas deverão
funcionar corretamente:


Busca de cliente por id

GET /clients/1


Busca paginada de clientes

GET /clients?page=0&size=6&sort=name


Inserção de novo cliente

POST /clients
```
{
"name": "Maria Silva",
"cpf": "12345678901",
"income": 6500.0,
"birthDate": "1994-07-20",
"children": 2
}
```

Atualização de cliente

PUT /clients/1
```
{
"name": "Maria Silvaaa",
"cpf": "12345678901",
"income": 6500.0,
"birthDate": "1994-07-20",
"children": 2
}
```


Deleção de cliente

DELETE /clients/1


CHECKLIST:

1. Busca por id retorna cliente existente

2. Busca por id retorna 404 para cliente inexistente

3. Busca paginada retorna listagem paginada corretamente

4. Inserção de cliente insere cliente com dados válidos

5. Inserção de cliente retorna 422 e mensagens customizadas com dados inválidos

6. Atualização de cliente atualiza cliente com dados válidos

7. Atualização de cliente retorna 404 para cliente inexistente

8. Atualização de cliente retorna 422 e mensagens customizadas com dados inválidos

9. Deleção de cliente deleta cliente existente

10. Deleção de cliente retorna 404 para cliente inexistente