made with ❤ in 🇧🇷
O PagueiBarato é uma API RESTful de busca e comparação de preços de produtos em diversos mercados varejistas e atacadistas, desenvolvida com a framework Java Spring Boot. Encontre o melhor preço do produto que desejar, compare preços entre lojas e cadastre ofertas imperdíveis dos estabelecimentos que frequenta.
A API segue os critérios para o design RESTful, oferecendo um serviço fácil e rápido de ser consumido.
Com a API PagueiBarato você pode informar quanto cada produto está custando em um determinado mercado, ou seja, você pode sugerir um preço para o produto.
Além disso, é possível verificar em quais mercados um produto pode ser encontrado.
Existem 9 rotas nas quais pode-se interagir com a API:
-
/categoria
- Refere-se às ações realizáveis sobre o recurso da categoria do produto; -
/estoque
- Concerne às ações realizáveis sobre o estoque de um mercado, isto é, a relação entre as chaves primárias de um Mercado e de um Produto; -
/mercado
- Rota referente às ações realizáveis sobre o recurso do mercado; -
/produto
- Rota referente às ações realizáveis sobre o recurso do produto; -
/ramo
- Refere-se às ações realizáveis sobre o recurso do ramo de um mercado; -
/sugestao
- Referente às ações realizáveis sobre o recurso da sugestão. A sugestão é uma indicação de preço feita por um usuário acerca de um produto em um determinado mercado; -
/usuario
- Refere-se às ações realizáveis sobre o recurso do usuário; -
/
- Rota inicial onde são obtidas todas as rotas possíveis para realizar a manipulação e busca dos recursos.
/login
- Concerne à rota para criação de uma sessão, ou seja, para realização de login pelo usuário, de modo que seja possível obter o token de acesso às rotas protegidas;
É necessário definir algumas variáveis de ambiente para rodar a API. Para fazer isso corretamente, siga as seguintes etapas:
- Acesse o diretório
src > main > resources
- Renomeie o arquivo
application-example.properties
paraapplication.properties
- Altere as informações do banco de dados para as informações do seu ambiente, como nome do banco, host, usuário e senha.
OBS: O arquivo SQL para criação da base de dados POSTGRESQL encontra-se aqui.
Para realizar algumas ações, como criação de produtos, mercados e sugestões, é necessário ter um usuário cadastrado e estar autenticado.
Para cadastrar um novo usuário, é necessário realizar uma requisição com o método POST à rota /usuario
enviando no corpo os dados do usuário.
Exemplo de corpo de requisição para criação de um usuário:
{
"nome": "John Doe",
"email": "[email protected]",
"senha": "mYP4s5W0Rd1sV3rYS3CR3t!!!",
"logradouro": "Rua Brasil",
"numero": 12,
"complemento": "Apart. 22",
"bairro": "Itaquera",
"cidade": "São Paulo",
"uf": "SP",
"cep": "03367-074"
}
Para criar ou obter alguns recursos, é necessário estar com algum usuário autenticado e enviar em cada requisição o token obtido na autenticação.
Para realizar a Autenticação é necessário fazer uma requisição POST na rota /login
enviando no corpo o email e a senha do usuário.
Exemplo de corpo de requisição para criação de uma sessão de autenticação:
{
"email": "[email protected]",
"senha": "mYP4s5W0Rd1sV3rYS3CR3t!!!"
}
Como resposta, você obterá um token que deverá ser enviado no cabeçalho Authorization junto com o prefixo "Bearer" em todas as requisições às rotas protegidas. Por exemplo:
Authorization: Bearer T0K3Ng3r4d0
Se você quiser indicar o preço de um produto em um mercado, você deverá criar uma sugestão de preço. Para criar uma sugestão, basta fazer uma requisição com o método POST para a rota /sugestao
enviando no corpo o preço - com o valor decimal -, o id do estoque e o id do usuário que está sugerindo o preço.
Exemplo de corpo de requisição para criação de uma sugestão para o produto no mercado:
{
"preco": 5.12,
"estoqueId": 10,
"criadoPor": 10
}
Existe ainda outra maneira de criar uma sugestão de preço para o produto em um mercado específico: através da rota do mercado.
Você pode fazer uma requisição com o método POST para a rota /mercado/{idMercado}/produto/{idProduto}/sugestao
, substituindo o idMercado e o idProduto pelo id do mercado que possui o produto e pelo id do produto que terá o preço sugerido no mercado informado, respectivamente. No corpo da requisição, basta enviar o preço da sugestão, com o valor decimal, e o id do usuário que está sugerindo o preço.
Exemplo de corpo de requisição para criação de uma sugestão pela rota do mercado:
{
"criadoPor": 10,
"preco": 7.00
}
No exemplo acima, o produto com o id {idProduto} do mercado com o id {idMercado} terá o preço de R$ 7.00 sugerido pelo usuário com o id 10.
OBS: É necessário estar autenticado para criar um estoque.
- - Framework
- - Banco de dados
- - ORM
- - Segurança
- - Gestão de dependências
- - Implementação do JWT para o Java
- - Cliente teste da API e Documentação
- - Deploy para desenv. e homologação
- - Editor de código / IDE
- - Controle de versões
- - Ilustrações