Skip to content

API RESTful para facilitar a comparação de preços de produtos no varejo. Construída com Spring Boot.

Notifications You must be signed in to change notification settings

lucascampanelli/paguei-barato-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PagueiBaratoLogo

PagueiBarato API

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.


Sumário


Como usar?

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;
  • /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;
  • / - Rota inicial onde são obtidas todas as rotas possíveis para realizar a manipulação e busca dos recursos.

Configurando o ambiente

É necessário definir algumas variáveis de ambiente para rodar a API. Para fazer isso corretamente, siga as seguintes etapas:

  1. Acesse o diretório src > main > resources
  2. Renomeie o arquivo application-example.properties para application.properties
  3. 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.


Cadastrando um usuário

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": "john.public-doe@email.com",
    "senha": "mYP4s5W0Rd1sV3rYS3CR3t!!!",
    "logradouro": "Rua Brasil",
    "numero": 12,
    "complemento": "Apart. 22",
    "bairro": "Itaquera",
    "cidade": "São Paulo",
    "uf": "SP",
    "cep": "03367-074"
}

Autenticando

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": "john.public-doe@email.com",
    "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


Sugerindo um preço

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.


Construída usando

  • - 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




🏗🚧 EM CONSTRUÇÃO 🚧🏗

About

API RESTful para facilitar a comparação de preços de produtos no varejo. Construída com Spring Boot.

Topics

Resources

Stars

Watchers

Forks

Languages