Skip to content

Entidade Product

Bruno Pinho edited this page Oct 19, 2021 · 4 revisions

Documentação dos Endpoints da Classe Product

Validações :

  • Campo name obrigatório
  • Campo description obrigatório
  • Campo price obrigatório
  • Campo price precisa ser positivo e maior que 0 , exemplo : 9,99
  • Campo categories precisa ter pelo menos um ID de categoria e é obrigatório

Endpoints 📍

- POST ( Salvando um Produto)

https://brunolanches-webservice.herokuapp.com/products/save

Exemplo de entrada de dados :

{
	"name":"Suco Detox",
	"description":"Um delicioso suco natural para ajudar sua flora intestinal",
	"price":10.50,
	"categories":[
	      {
		"id":4
	         },
		{
		 "id":3
		}
	     ]
}

- PUT ( Atualizando um Produto)

https://brunolanches-webservice.herokuapp.com/products/update/1

Obs : Informe um id válido na request, caso contrário irá lançar uma Exception.

Exemplo de entrada de dados :

{
	"name":"Suco Detox - ATUALIZADO",
	"description":"Um delicioso suco natural para ajudar sua flora intestinal - ATUALIZADO ",
	"price":12.50,
	"categories":[
	      {
		"id":2
	         },
		{
		 "id":1
		}
	     ]
}

- GET ( Listando todos os Produtos )

https://brunolanches-webservice.herokuapp.com/products

OBS: Listamos os produtos sem as categorias para não sobrecarregar o sistema.

Exemplo de saída de dados :

[
  {
    "id": 1,
    "name": "Suco Detox - ATUALIZADO",
    "description": "Um delicioso suco natural para ajudar sua flora intestinal - ATUALIZADO ",
    "price": 12.5,
    "categories": []
  },
  {
    "id": 2,
    "name": "SPAGHETTI WITH GARLIC AND OIL",
    "description": "A PERFECT SPAGHETTI FOR YOUR MEAL",
    "price": 25.0,
    "categories": []
  },
  {
    "id": 3,
    "name": "PEPPERONI PIZZA",
    "description": "A DELICIOUS PEPPERONI PIZZA MADE WITH THE BEST INGREDIENTS",
    "price": 15.0,
    "categories": []
  },
  {
    "id": 4,
    "name": "MOZZARELLA PIZZA",
    "description": "A DELICIOUS MOZZARELLA PIZZA MADE WITH THE BEST INGREDIENTS",
    "price": 15.0,
    "categories": []
  },
  {
    "id": 5,
    "name": "X-BURGER",
    "description": "A DELICIOUS X-BURGER",
    "price": 10.0,
    "categories": []
  },
  {
    "id": 6,
    "name": "AMERICAN BURGER",
    "description": "A DELICIOUS SANDWICH WITH LOTS OF SPICE AND LOVE",
    "price": 10.0,
    "categories": []
  },
  {
    "id": 7,
    "name": "TOFU SANDWICH",
    "description": "A DELICIOUS AND NATURAL SANDWICH WITH LOTS OF LOVE",
    "price": 15.0,
    "categories": []
  },
  {
    "id": 8,
    "name": "COKE",
    "description": "A DELICIOUS COLD DRINK",
    "price": 2.0,
    "categories": []
  },
  {
    "id": 9,
    "name": "BEER",
    "description": "A DELICIOUS BEER",
    "price": 3.0,
    "categories": []
  },
  {
    "id": 10,
    "name": "REDBULL",
    "description": "A DRINK TO KEEP YOU AWAKE",
    "price": 4.0,
    "categories": []
  },
  {
    "id": 11,
    "name": "ORANGE JUICE",
    "description": "A VERY TASTY AND NATURAL JUICE",
    "price": 1.5,
    "categories": []
  }
]

- GET ( Listando um produto específico pelo ID)

https://brunolanches-webservice.herokuapp.com/products/find-by-id/1

Obs :

  • Informe um um id válido na request, caso contrário irá lançar uma Exception.
  • Como vamos trazer um product específico , trazemos a sua categoria junto.

Exemplo de saída de dados :

{
  "id": 3,
  "name": "PEPPERONI PIZZA",
  "description": "A DELICIOUS PEPPERONI PIZZA MADE WITH THE BEST INGREDIENTS",
  "price": 15.0,
  "categories": [
    {
      "id": 2,
      "name": "PIZZA"
    }
  ]
}
}

- GET ( Listando um produto específico pelo NAME)

https://brunolanches-webservice.herokuapp.com/products/find-by-name?name=COKE

Obs : Informe um um name válido na request, caso contrário irá lançar uma Exception.

Exemplo de saída de dados :

{
  "id": 8,
  "name": "COKE",
  "description": "A DELICIOUS COLD DRINK",
  "price": 2.0,
  "categories": [
    {
      "id": 4,
      "name": "DRINK"
    }
  ]
}

- GET ( Busca paginada de produtos )

http://localhost:8080/products/paged-search?page=0&size=10&sort=price,ASC
(Começa na página 0 e lista 10 produtos por página ordenados de forma ascendente quanto ao preço)

Obs :

  • Informe um um name válido na request, caso contrário irá lançar uma Exception.
  • Parâmetros para busca paginada :
  1. page : Representa qual número da página deseja começar a paginação.
  2. size : Representa a quantidade de produtos na página.
  3. sort : Representa como esses produtos vão ser ordenados.

Exemplo de saída de dados :

{
  "content": [
    {
      "id": 11,
      "name": "ORANGE JUICE",
      "description": "A VERY TASTY AND NATURAL JUICE",
      "price": 1.5,
      "categories": []
    },
    {
      "id": 8,
      "name": "COKE",
      "description": "A DELICIOUS COLD DRINK",
      "price": 2.0,
      "categories": []
    },
    {
      "id": 9,
      "name": "BEER",
      "description": "A DELICIOUS BEER",
      "price": 3.0,
      "categories": []
    },
    {
      "id": 10,
      "name": "REDBULL",
      "description": "A DRINK TO KEEP YOU AWAKE",
      "price": 4.0,
      "categories": []
    },
    {
      "id": 6,
      "name": "AMERICAN BURGER",
      "description": "A DELICIOUS SANDWICH WITH LOTS OF SPICE AND LOVE",
      "price": 10.0,
      "categories": []
    },
    {
      "id": 5,
      "name": "X-BURGER",
      "description": "A DELICIOUS X-BURGER",
      "price": 10.0,
      "categories": []
    },
    {
      "id": 1,
      "name": "Suco Detox - ATUALIZADO",
      "description": "Um delicioso suco natural para ajudar sua flora intestinal - ATUALIZADO ",
      "price": 12.5,
      "categories": []
    },
    {
      "id": 7,
      "name": "TOFU SANDWICH",
      "description": "A DELICIOUS AND NATURAL SANDWICH WITH LOTS OF LOVE",
      "price": 15.0,
      "categories": []
    },
    {
      "id": 4,
      "name": "MOZZARELLA PIZZA",
      "description": "A DELICIOUS MOZZARELLA PIZZA MADE WITH THE BEST INGREDIENTS",
      "price": 15.0,
      "categories": []
    },
    {
      "id": 3,
      "name": "PEPPERONI PIZZA",
      "description": "A DELICIOUS PEPPERONI PIZZA MADE WITH THE BEST INGREDIENTS",
      "price": 15.0,
      "categories": []
    }
  ],
  "pageable": {
    "sort": {
      "unsorted": false,
      "sorted": true,
      "empty": false
    },
    "offset": 0,
    "pageNumber": 0,
    "pageSize": 10,
    "paged": true,
    "unpaged": false
  },
  "last": false,
  "totalPages": 2,
  "totalElements": 11,
  "size": 10,
  "number": 0,
  "sort": {
    "unsorted": false,
    "sorted": true,
    "empty": false
  },
  "first": true,
  "numberOfElements": 10,
  "empty": false
}

- DELETE ( Removendo um produto específico pelo ID)

https://brunolanches-webservice.herokuapp.com/products/delete/1

Obs : Informe um um id válido na request, caso contrário irá lançar uma Exception.