REST API para cadastro de pessoas
Acesse a API rodando no Heroku aqui.
Esta é uma API construída para o projeto "Desenvolvendo um sistema de gerenciamento de pessoas em API REST com Spring Boot" da plataforma DIO. É uma aplicação Spring Boot que utiliza os módulos Web, Data JPA e Validation. Lombok foi incluído para a geração de código boilerplate e Mapstruct, para conversão entre models e DTOs. A versão local da aplicação usa o MySQL e a versão do Heroku tem o PostgreSQL como banco de dados. Swagger foi utilizado para documentar a aplicação e os testes unitários foram implementados com a bibioteca de testes do Spring Boot.
- Java
- Spring Boot (Web, Data JPA, Validation, Test)
- Gradle
- Swagger
- Mapstruct
- Project Lombok
- MySQL
- PostgreSQL (no Heroku)
Clone o repositório: git clone https://github.com/luizsac/people-rest-api.git
Entre na pasta do projeto: cd people-rest-api
Suba o container do banco de dados no docker: docker run --name mysql_container -p 3306:3306 -e MYSQL_ROOT_PASSWORD=tatakae -d mysql:latest
Execute a aplicação: .\gradlew bootRun no Windows ou ./gradlew bootRun no Linux/Mac
Obs.: No Linux, talvez seja necessário executar o comando
chmod +x gradlewantes de executar a aplicação
POST /api/v1/people
{
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "13-12-1912",
"phones": [
{
"number": "5587864567786",
"type": "COMMERCIAL"
}
]
}
Obs.: O CPF deve ser válido. Acesse um gerador clicando aqui.
HTTP/1.1 201 Created
Date: Mon, 28 Feb 2022 20:50:05 GMT
Status: 201 Created
Content-Type: application/json
{
"id": 1,
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "1912-12-13",
"phones": [
{
"id": 1,
"type": "COMMERCIAL",
"number": "5587864567786"
}
]
}
GET /api/v1/people
HTTP/1.1 200 OK
Date: Mon, 28 Feb 2022 20:50:05 GMT
Status: 200 OK
Content-Type: application/json
[
{
"id": 1,
"firstName": "Bar",
"lastName": "Foo",
"cpf": "02788745095",
"birthDate": "1987-04-23",
"phones": [
{
"id": 1,
"type": "MOBILE",
"number": "5548997685748"
}
]
},
{
"id": 2,
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "1912-12-13",
"phones": [
{
"id": 2,
"type": "COMMERCIAL",
"number": "5587864567786"
}
]
}
]
GET /api/v1/people/id
HTTP/1.1 200 OK
Date: Mon, 28 Feb 2022 20:50:05 GMT
Status: 200 OK
Content-Type: application/json
{
"id": 2,
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "1912-12-13",
"phones": [
{
"id": 2,
"type": "COMMERCIAL",
"number": "5587864567786"
}
]
}
PUT /api/v1/people/id
{
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "30-04-1945",
"phones": [
{
"number": "5543934328786",
"type": "COMMERCIAL"
}
]
}
HTTP/1.1 200 OK
Date: Mon, 28 Feb 2022 20:50:05 GMT
Status: 200 OK
Content-Type: application/json
{
"id": 2,
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "1945-04-30",
"phones": [
{
"id": 3,
"type": "COMMERCIAL",
"number": "5543934328786"
}
]
}
DELETE /api/v1/people/id
HTTP/1.1 200 OK
Date: Mon, 28 Feb 2022 20:50:05 GMT
Status: 200 OK
Content-Type: application/json
{
"id": 2,
"firstName": "Foo",
"lastName": "Bar",
"cpf": "78946699035",
"birthDate": "1945-04-30",
"phones": [
{
"id": 3,
"type": "COMMERCIAL",
"number": "5543934328786"
}
]
}
Essa API está sob a licença MIT. Veja o arquivo LICENSE para mais informações.