Para explorar as possibilidades do JPA e os padrões de projeto em Spring Boot, desenvolvi uma API Restful para uma academia digital. Essa API permite que um aluno seja registrado no banco de dados, o que automaticamente o matricula e grava as informações na tabela correspondente. Além disso, ela possibilita o cadastro da avaliação física do aluno. Embora ainda haja espaço para aprimoramentos, este projeto foi uma oportunidade para demonstrar como implementar uma API em Spring Boot utilizando padrões como Singleton, Strategy e Facade.
- Java 17
- Maven
- Spring Boot
- Spring Data JPA
- OpenFeign
- H2 Database
- Lombok
- Hibernate validator
// POST /student
{
"name": "Jean Evenx",
"cpf": "335.789.410-69",
"yearOfBirth": "2000-02-19",
"cep": "08431290"
}
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
{
"name": "Jean Evenx",
"cpf": "335.789.410-69",
"yearOfBirth": "2000-02-19",
"cep": "08431190"
}
- Caso não:
status code: 500 Internal Server Error
// PUT /student/1
{
"name": "Jean Evenx",
"yearOfBirth": "2001-02-20",
"cep": "08431290",
"complemento": "3"
}
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
{
"name": "Jean Evenx",
"yearOfBirth": "2001-02-20",
"cep": "08431290",
"complemento": "3"
}
- Caso não:
status code: 500 Internal Server Error
Get /student
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
[
{
"id": 1,
"name": "Jean Evenx",
"cpf": "335.789.410-69",
"address": {
"cep": "08431190",
"logradouro": "Rua Manuel Xavier dos Passos",
"complemento": "",
"bairro": "Jardim Guaianazes",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
},
"yearOfBirth": "2000-02-19"
}
...
]
- Caso não:
status code: 500 Internal Server Error
GET /student/1
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
{
"id": 1,
"name": "Jean Evenx",
"cpf": "335.789.410-69",
"address": {
"cep": "08431190",
"logradouro": "Rua Manuel Xavier dos Passos",
"complemento": "",
"bairro": "Jardim Guaianazes",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
},
"yearOfBirth": "2000-02-19"
}
- Caso não:
status code: 500 Internal Server Error
DELETE /student/1
- Caso não:
status code: 500 Internal Server Error
GET /enrollment
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
[
{
"id": 1,
"enrollmentDate": "2023-04-26T12:23:41.824579",
"studentInfo": {
"studentId": 1,
"name": "Jean Evenx",
"cpf": "335.789.410-69"
}
}
...
]
- Caso não:
status code: 500 Internal Server Error
// POST /evaluation
{
"studentId": 1,
"weight": 66.3,
"height": 185.6
}
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
{
"studentId": 1,
"weight": 66.3,
"height": 185.6
}
- Caso não:
status code: 500 Internal Server Error
GET /evaluation
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
[
{
"id": 1,
"name": "Jean Evenx",
"cpf": "335.789.410-69",
"address": {
"cep": "08431190",
"logradouro": "Rua Manuel Xavier dos Passos",
"complemento": "",
"bairro": "Jardim Guaianazes",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
},
"yearOfBirth": "2000-02-19"
},
"evaluationDate": "2023-04-26T12:16:46.308076",
"weight": 66.3,
"height": 185.6
}
...
]
- Caso não:
status code: 500 Internal Server Error
GET /evaluation/1
- Caso a requisição tenha sido bem sucedida, a seguinte resposta será retornada:
status code: 200 OK
{
"id": 1,
"name": "Jean Evenx",
"cpf": "335.789.410-69",
"address": {
"cep": "08431190",
"logradouro": "Rua Manuel Xavier dos Passos",
"complemento": "",
"bairro": "Jardim Guaianazes",
"localidade": "São Paulo",
"uf": "SP",
"ibge": "3550308",
"gia": "1004",
"ddd": "11",
"siafi": "7107"
},
"yearOfBirth": "2000-02-19"
},
"evaluationDate": "2023-04-26T12:16:46.308076",
"weight": 66.3,
"height": 185.6
}
- Caso não:
status code: 500 Internal Server Error
OBS: Esta foi a minha implementação para os dois últimos desafios do Bootcamp Banco Pan Java Developer. Sinta-se à vontade para relatar problemas e contribuir com o projeto.