http://localhost:8080/swagger-ui.html
- JDK
Abrir o projeto no seu editor de preferência (Eclipse, IntelliJ, VS Code) e iniciar a classe principal SpringEvaluation4Application.java
.
As requisições do tipo GET
podem ser testadas através do navagador, porém para testar a API em apenas um lugar, recomendam-se os ‘softwares’ Postman
e Insomnia
.
Esse projeto já possui alguns dados inseridos para exemplo. Para testar o endpoint /auth
favor utilizar o seguinte usuário e senha.
{
"username": "gabriel",
"password": "123456"
}
Exemplo de requisição
{
"name": "Gabriel",
"document": "38549174904",
"wage": 3500,
"gender": "M",
"addresses": [
{
"country": "Brasil",
"state": "Paraná",
"city": "SJP",
"zipCode": 83015717,
"street": "Rua das flores"
},
{
"country": "Brasil",
"state": "Paraná",
"city": "Pinhais",
"zipCode": 83010561,
"street": "Rua dos cravos"
}
]
}
Exemplo de resposta
{
"id": 1,
"name": "Gabriel",
"document": "385.491.749-04",
"wage": "R$ 3.500,00",
"gender": "M",
"addresses": [
{
"country": "SJP",
"state": "Paraná",
"city": "SJP",
"zipCode": "83015-717",
"street": "Rua das flores"
},
{
"country": "Pinhais",
"state": "Paraná",
"city": "Pinhais",
"zipCode": "83010-561",
"street": "Rua dos cravos"
}
]
}
Exemplo de resposta
[
{
"id": 1,
"name": "Gabriel",
"document": "385.491.749-04",
"wage": "R$ 3.500,00",
"gender": "M",
"addresses": [
{
"country": "SJP",
"state": "Paraná",
"city": "SJP",
"zipCode": "83015-717",
"street": "Rua das flores"
},
{
"country": "Pinhais",
"state": "Paraná",
"city": "Pinhais",
"zipCode": "83010-561",
"street": "Rua dos cravos"
}
]
},
{
"id": 2,
"name": "Ana",
"document": "594.602.479-54",
"wage": "R$ 5.000,00",
"gender": "F",
"addresses": [
{
"country": "SJP",
"state": "Paraná",
"city": "SJP",
"zipCode": "83015-717",
"street": "Rua das flores"
}
]
}
]
- Filtrar por nome
/persons?name=Gabriel
- Filtrar por sexo
/persons?gender=F
- Filtrar por nome e sexo.
/persons?name=Gabriel&gender=M
- Ordenar por todos os parâmetros possíveis, para isso deve-se indicar se é ascendente ou descendente.
Os parâmetros possíveis são:
- name
- document
- wage
- gender
/persons?sort=name,asc
/persons?sort=name,desc
/persons?sort=wage,asc
/persons?sort=wage,desc
/persons?sort=name,asc&sort=wage,asc
/persons?sort=name,desc&sort=wage,desc
- Também é possível juntar a ordenação com a filtragem.
/persons?name=Gabriel&sort=name,asc&sort=wage,desc
Exemplo de resposta
{
"id": 2,
"name": "Ana",
"document": "594.602.479-54",
"wage": "R$ 5.000,00",
"gender": "F",
"addresses": [
{
"country": "SJP",
"state": "Paraná",
"city": "SJP",
"zipCode": "83015-717",
"street": "Rua das flores"
}
]
}
Exemplo de requisição
{
"name": "Ana",
"document": "59460247954",
"wage": 5000,
"gender": "F",
"addresses": [
{
"country": "Brasil",
"state": "Paraná",
"city": "SJP",
"zipCode": 83015717,
"street": "Rua das flores"
}
]
}
Exemplo de resposta
{
"id": 1,
"name": "Ana",
"document": "594.602.479-54",
"wage": "R$ 5.000,00",
"gender": "F",
"addresses": [
{
"country": "SJP",
"state": "Paraná",
"city": "SJP",
"zipCode": "83015-717",
"street": "Rua das flores"
}
]
}
Realiza a autenticação do usuário, permitindo que ele possa ter acesso as endpoints /protected/products
e /protected/demands
Exemplo de requisição
{
"username": "gabriel",
"password": "123456"
}
Exemplo de resposta
{
"token": "eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJNYXJrZXQgQVBJIiwic3ViIjoiMSIsImlhdCI6MTYyNjYzNTEzMCwiZXhwIjoxNjI2NzIxNTMwfQ.BmSrN8dU22JHnMvGm8sZ6GZsv_NWa1OugEPBeXGgpb8",
"type": "Bearer"
}
Para o acesso a esse endpoint, é necessário possuir o token JWT realizando o POST em /auth
e passá-lo no cabeçalho Authentication
Exemplo de requisição
{
"description": "Carne",
"unitPrice": 25
}
Exemplo de resposta
{
"id": 4,
"description": "Carne",
"unitPrice": "R$ 25,00"
}
Exemplo de resposta
[
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
},
{
"id": 2,
"description": "Café",
"unitPrice": "R$ 10,00"
},
{
"id": 3,
"description": "Feijão",
"unitPrice": "R$ 12,00"
},
{
"id": 4,
"description": "Carne",
"unitPrice": "R$ 25,00"
}
]
- Filtrar por descrição
/protected/products?description=Arroz
- Ordenar por todos os parâmetros possíveis, para isso deve-se indicar se é ascendente ou descendente.
Os parâmetros possíveis são:
- description
- unitPrice
/protected/products?sort=description,asc
/protected/products?sort=description,desc
/protected/products?sort=unitPrice,asc
/protected/products?sort=unitPrice,desc
/protected/products?sort=description,asc&sort=unitPrice,asc
/protected/products?sort=description,desc&sort=unitPrice,desc
- Também é possível juntar a ordenação com a filtragem.
/protected/products?description=Arroz&sort=unitPrice,asc
Exemplo de resposta
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
}
Exemplo de requisição
{
"description": "Carne",
"unitPrice": 50
}
Exemplo de resposta
{
"id": 4,
"description": "Carne",
"unitPrice": "R$ 50,00"
}
Para o acesso a esse endpoint, é necessário possuir o token JWT realizando o POST em /auth
e passá-lo no cabeçalho Authentication
Exemplo de requisição
{
"productIds": [
1,
2
]
}
Exemplo de resposta
{
"id": 4,
"total": "R$ 25,00",
"creationTime": "18/07/2021 16:17",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
},
{
"id": 2,
"description": "Café",
"unitPrice": "R$ 10,00"
}
]
}
Exemplo de resposta
[
{
"id": 1,
"total": "R$ 37,00",
"creationTime": "18/07/2021 16:17",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
},
{
"id": 2,
"description": "Café",
"unitPrice": "R$ 10,00"
},
{
"id": 3,
"description": "Feijão",
"unitPrice": "R$ 12,00"
}
]
},
{
"id": 2,
"total": "R$ 25,00",
"creationTime": "18/07/2021 16:17",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
},
{
"id": 2,
"description": "Café",
"unitPrice": "R$ 10,00"
}
]
},
{
"id": 3,
"total": "R$ 15,00",
"creationTime": "18/07/2021 16:17",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
}
]
},
{
"id": 4,
"total": "R$ 25,00",
"creationTime": "18/07/2021 16:17",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
},
{
"id": 2,
"description": "Café",
"unitPrice": "R$ 10,00"
}
]
}
]
Exemplo de resposta
{
"id": 3,
"total": "R$ 15,00",
"creationTime": "18/07/2021 16:18",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
}
]
}
Exemplo de requisição
{
"productIds": [
1,
2
]
}
Exemplo de resposta
{
"id": 4,
"total": "R$ 25,00",
"creationTime": "18/07/2021 16:19",
"products": [
{
"id": 1,
"description": "Arroz",
"unitPrice": "R$ 15,00"
},
{
"id": 2,
"description": "Café",
"unitPrice": "R$ 10,00"
}
]
}