Desafio realizado durante o treinamento do programa Starter na GFT. O objetivo era aplicar os conceitos apreendidos de API's Rest com Spring. Para isso era necessário seguir os seguintes requisitos.
Java, Spring, Spring Data JPA, Spring Security, Spring Fox (OpenAPI), Lombok, Mapstruct, Flyway e Mysql.
- Criar os domínios da API com base no modelo UML.
- Utilizar os contratos para os métodos POST.
- Usar validações
- Tratar exceções.
- Aplicar segurança na API com Oauth 2.
- Documentar a API utilizando OpenApi (Swagger2).
- Popular a base com dados para teste.
- Cliente
{
"nome": "Fulano",
"email": "email@gmail.com",
"senha": "123",
"documento": "111.111.11-50"
}- Produto
{
"nome": "Produto XYZ",
"valor": 10.50,
"promocao": true,
"valorPromo": 9.50,
"categoria": "eletronico",
"imagem": "produto.jpg",
"quantidade": 5,
"fornecedor": {
"id": 1
}
}- Fornecedor
{
"nome": "Produto XYZ",
"cnpj": "XX.XXX.XXX/XXXX-XX"
}- Venda
{
"fornecedor": {
"id": 1
},
"cliente": {
"id": 1
},
"produtos": [
{
"id": 1
},
{
"id": 3
}
],
"dataCompra": "30/01/2020"
}
** Utilizar modelo em todos os endpoints.
- Tratamento de exceções.
- Migração de dados com Flyway.
- Os endpoints retornam páginas nas consultas.
- Conversão de entradas e saídas em DTO's com Map Struct.
- A documentação é feita em cima de interfaces, deixando os recursos (controllers), limpos.
