Skip to content

Commit

Permalink
Documentação da API no README
Browse files Browse the repository at this point in the history
  • Loading branch information
lucascampanelli committed Jul 20, 2022
1 parent 22eec50 commit 2f0fe4d
Showing 1 changed file with 126 additions and 1 deletion.
127 changes: 126 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
![PagueiBaratoLogo](https://user-images.githubusercontent.com/56810073/176563856-105698e9-6258-463b-96fc-3032660bf308.png)
# PagueiBarato API
made with ❤ in 🇧🇷

<br>
0.0.1

<img src="https://img.shields.io/github/v/release/lucascampanelli/paguei-barato-api?style=for-the-badge"/>
<hr>

<p>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.</p>
Expand All @@ -13,4 +15,127 @@ made with ❤ in 🇧🇷

# Como usar?

<p>Com a API PagueiBarato você pode informar quanto cada produto está custando em um determinado mercado, ou seja, você pode <strong>sugerir um preço</strong> para o produto.</p>

<p>Além disso, é possível verificar em quais mercados um produto pode ser encontrado.</p>

<br>

<p>Existem <strong>9 rotas</strong> nas quais pode-se interagir com a API:</p>

<ul>
<li>
<strong>/categoria</strong> - Refere-se às ações realizáveis sobre o recurso da categoria do produto;
</li>
<li>
<strong>/estoque</strong> - Concerne às ações realizáveis sobre o estoque de um mercado, isto é, a relação entre as chaves primárias de um <em>Mercado</em> e de um <em>Produto</em>;
</li>
<li>
<strong>/mercado</strong> - Rota referente às ações realizáveis sobre o recurso do mercado;
</li>
<li>
<strong>/produto</strong> - Rota referente às ações realizáveis sobre o recurso do produto;
</li>
<li>
<strong>/ramo</strong> - Refere-se às ações realizáveis sobre o recurso do ramo de um mercado;
</li>
<li>
<strong>/sugestao</strong> - Referente às ações realizáveis sobre o recurso da sugestão. A sugestão é uma <em>indicação de preço</em> feita por um usuário acerca de um produto em um determinado mercado;
</li>
<li>
<strong>/usuario</strong> - Refere-se às ações realizáveis sobre o recurso do usuário;
</li>
</li>
<strong>/login</strong> - 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;
</li>
<li>
<strong>/</strong> - Rota inicial onde é obtida todas as rotas possíveis para realizar a manipulação e busca dos recursos.
</li>
</ul>

<br>

## Cadastrando um usuário
<p>Para realizar algumas ações, como criação de produtos, mercados e sugestões, é necessário ter um usuário cadastrado e estar autenticado.</p>
<p>Para cadastrar um novo usuário, é necessário realizar uma requisição com o método <strong>POST</strong> à rota <strong>/usuario</strong> enviando no <em>corpo</em> os dados do usuário. </p>
<p>Exemplo de corpo de requisição para criação de um usuário:</p>

<code>
{<br>
"nome": "John Doe",<br>
"email": "[email protected]",<br>
"senha": "mYP4s5W0Rd1sV3rYS3CR3t!!!",<br>
"logradouro": "Rua Brasil",<br>
"numero": 12,<br>
"complemento": "Apart. 22",<br>
"bairro": "Itaquera",<br>
"cidade": "São Paulo",<br>
"uf": "SP",<br>
"cep": "03367-074"<br>
}
</code>

<br>

## Autenticando
<p>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.</p>
<p>Para realizar a Autenticação é necessário fazer uma requisição <strong>POST</strong> na rota <strong>/login</strong> enviando no <em>corpo</em> o <strong>email</strong> e a <strong>senha</strong> do usuário.</p>
<p>Exemplo de corpo de requisição para criação de uma sessão de autenticação:</p>

<code>
{<br>
"email": "[email protected]",<br>
"senha": "R0ot!!!123"<br>
}
</code>

<br>

<p>Como resposta, você obterá um token que deverá ser enviado no cabeçalho <strong>Authorization</strong> junto com o prefixo "Bearer". Por exemplo:<p>
<p><em><strong>Authorization:</strong> Bearer T0K3Ng3r4d0</em></p>

<br>

## Sugerindo um preço
<p>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 <strong>POST</strong> para a rota <strong>/sugestao</strong> enviando no <em>corpo</em> o <strong>preço</strong> - com o valor decimal -, o <strong>id do estoque</strong> e o <strong>id do usuário</strong> que está sugerindo o preço.</p>

> <em>OBS: Para criar um estoque é necessário estar autenticado.</em>
<br>

# Construída usando
<ul>
<li>
<img width=100 src="https://img.shields.io/badge/Spring_Boot-F2F4F9?style=for-the-badge&logo=spring-boot"> - Framework
</li>
<li>
<img width=100 src="https://img.shields.io/badge/PostgreSQL-316192?style=for-the-badge&logo=postgresql&logoColor=white"> - Banco de dados
</li>
<li>
<img width=100 src="https://img.shields.io/badge/Hibernate-59666C?style=for-the-badge&logo=Hibernate&logoColor=white"> - ORM
</li>
<li>
<img width=100 src="https://img.shields.io/badge/apache_maven-C71A36?style=for-the-badge&logo=apachemaven&logoColor=white"> - Gestão de dependências
</li>
<li>
<img width=100 src="https://img.shields.io/badge/JWT-000000?style=for-the-badge&logo=JSON%20web%20tokens&logoColor=white"> - Implementação para o Java do JWT
</li>
<li>
<img width=100 src="https://img.shields.io/badge/Postman-FF6C37?style=for-the-badge&logo=Postman&logoColor=white"> - Cliente teste da API e Documentação
</li>
<li>
<img width=100 src="https://img.shields.io/badge/Heroku-430098?style=for-the-badge&logo=heroku&logoColor=whitee"> - Deploy para desenv. e homologação
</li>
<li>
<img width=100 src="https://img.shields.io/badge/VSCode-0078D4?style=for-the-badge&logo=visual%20studio%20code&logoColor=white"> - Editor de código / IDE
</li>
<li>
<img width=100 src="https://img.shields.io/badge/GIT-E44C30?style=for-the-badge&logo=git&logoColor=white"> - Controle de versões
</li>
<li>
<img width=100 src="https://img.shields.io/badge/Inkscape-000000?style=for-the-badge&logo=Inkscape&logoColor=white"> - Ilustrações
</li>
</ul>

<br><br><br>
🏗🚧 EM CONSTRUÇÃO 🚧🏗

0 comments on commit 2f0fe4d

Please sign in to comment.