Skip to content

LucasHProenca/Labook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


SobreFuncionalidadesComo executarTecnologiasAutor

💻 Sobre o projeto

🖥 Labook - Essa API foi desenvolvida baseada numa rede social famosa e com o objetivo de possibilitar o cadastro de novos usuários, assim como a criação de publicações e a interação entre as pessoas, podendo cada uma manifestar se gostou ou não daquele conteúdo exibido por outro usuário. Este projeto possui inúmeras funcionalidades, as quais detalharemos mais adiante.

Projeto desenvolvido durante o Bootcamp Web Full-Stack da Labenu. Esse bootcamp é uma experiência online, um programa com mais de 1000 horas de experiência prática em desenvolvimento Full-stack e projetos individuais.


⚙️ Funcionalidades

  • getUsers
  • signUp
  • login
  • editUser
  • deleteUser
  • getPosts
  • createPost
  • editPost
  • likeOrDislikePost
  • deletePost

🚀 Como executar

Pré-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Node.js, Postman, é possível também utilizar a API pela versão web do Postman, no entanto, utilizaremos a versão para desktop para minimizar quaisquer chances de problemas. Além disto é bom ter um editor para trabalhar com o código como VSCode.

🎲 Rodando a API

# Clone este repositório
$ git clone link-do-repositório-git

# Acesse a pasta do projeto no terminal/cmd
$ cd Labook

# Para abrir o vsCode
$ code .

# Instale as dependências
$ npm install

# Execute a aplicação em modo de desenvolvimento
$ npm run dev

# O servidor inciará na porta:3003 

🗃 Configurando o banco de dados

Extensão VSCode

Para manipularmos manualmente código SQL será necessário instalar no VSCode a extensão chamada MySQL, criada por Weijan Chen. E sim, apesar do nome ser MySQL iremos aplicar o uso do SQLite. Essa extensão é utilizada para se conectar com diversos tipos de bancos relacionais, inclusive não relacionais. Caso a extensão não esteja instalada no seu projeto, é possível acessa-la por aqui:

image

Acessando o menu da extensão

Se a extensão for instalada corretamente, aparecerá no menu de navegação lateral à esquerda o ícone de banco de dados (destacado com a seta laranja). Esse é o menu da extensão e é onde você irá se conectar com o arquivo labook.db.

image

Acessando o menu do SQLite

Ao clicar no botão “Create Connection” é aberta a aba de conexão da extensão. Escolha o Server Type como sendo SQLite (indicado na seta laranja).

image

ATENÇÃO!

Caso seja a primeira vez que você está instalando essa extensão, talvez seja necessário instalar algumas dependências para o SQLite rodar em sua máquina. A própria extensão irá te avisar se for o caso e você precisará clicar no botão para instalá-las. Se não aparecer nenhum aviso ou deu tudo certo, pode prosseguir!

Criando a conexão
  1. Dê um nome para a conexão
  2. Selecione o arquivo: labook.db
  3. Salve a conexão

image

Verificando se deu certo

Caso tenha dado tudo certo, irá aparecer no menu do banco de dados o nome de sua conexão junto com algumas informações.

image

Inserindo as tabelas no banco de dados

Para criar as tabelas, basta clicar em "execute" em cada um dos três como mostra a imagem abaixo:

image

💾 Configurando o .env

Lembre-se de configurar o arquivo .env como está feito no exemplo em .env.example

image

Feito isso acesse a documentação da API e clique em "Run in Postman" localizado no canto superior direito para abrir dentro do app.

Requisições

ATENÇÃO! Todos os exemplos são fictícios, pois não haveria sentido em disponibilizarmos os dados de nossos usuários, portanto utilize essa API para construir a sua própria rede social.

getUsers

A requisição getAllUsers tem duas funcionalidades diferentes: A requisição getUsers tem a funcionalidade de mostrar a lista de usuários cadastrados no banco de dados, no entanto, apenas "ADMINS" tem acesso a essa funcionalidade, passando um token de autorização compátivel.

getUsersRequest

getUsersResponse

signUp

A requisição signUp tem a funcionalidade de cadastrar uma nova conta, porém alguns dados precisam ser inseridos no corpo da requisição, são esses:

"name", "email", "password".

Contudo, foram implementadas as seguintes restrições: Caso o "email" já tenha sido cadastrado por outro usuário, não será possível concluir o cadastro; Caso o "email" não esteja com a formatação correta (@email.com), não será possível concluir o cadastro; Caso a senha não atenda a um padrão mínimo pré-estabelecido, não será possível concluir o cadastro, no caso do Labook, é obrigatório que "password" tenha entre 8 e 12 caracteres, com letras maiúsculas e minúsculas, e no mínimo um caractere especial. Todos os usuários cadastrados vem com a "role" como "NORMAL" impedindo seu acesso a recursos que são reservados a administradores. Como resposta da requisição, o usuário recebe um token de autorização, lembre-se de guardá-lo pois será necessário para acessar as outras funcionalidades do sistema.

signUpRequest

signUpResponse

login

A requisição login tem a funcionalidade de entrar na sua respectiva conta, porém alguns dados precisam ser inseridos no corpo da requisição, são esses:

"email", "password".

Contudo, foram implementadas as seguintes restrições: Caso o "email" e o "password" não correspondam com os utilizados no endpoint "signup", não será possível acessar a conta. Como resposta da requisição, o usuário recebe um token de autorização, lembre-se de guardá-lo pois será necessário para acessar as outras funcionalidades do sistema.

loginRequest

loginResponse

editUser

A requisição editUser permite ao usuário editar suas informações pessoais como "name", "email" e "password", no entanto, algumas restrições foram implementadas para o uso dessa funcionalidade, são essas: Apenas o dono da conta pode editar suas informações; Será necessário passar o token gerado no login para comprovar que a pessoa é realmente quem ela diz ser; Será necessário abrir uma solicitação para que um administrador informe ao usuário qual é seu "id" que foi gerado no momento em que fez o cadastro no sistema, pois o mesmo não tem acesso a essa informação por questão de segurança. Com o id em mãos, basta inseri-lo no campo "Path Variables" na aba "Params" junto ao token no campo "Authorization" na aba "Headers", e torna-se possível editar as informações de cadastro citadas acima.

editUserRequest

deleteUser

A requisição deleteUser permite ao usuário excluir sua conta, no entanto, algumas restrições foram implementadas para o uso dessa funcionalidade, são essas: Apenas o dono da conta ou um administrador podem apagar um usuário; Será necessário passar o token gerado no login para comprovar que a pessoa é realmente quem ela diz ser; Caso o usuário queira apagar sua própria conta, será necessário abrir uma solicitação para que um administrador informe a pessoa qual é seu "id" que foi gerado no momento em que fez o cadastro no sistema, pois o mesmo não tem acesso a essa informação por questão de segurança. Com o id em mãos, basta inseri-lo no campo "Path Variables" na aba "Params" junto ao token no campo "Authorization" na aba "Headers", e torna-se possível apagar o cadastro do usuário.

deleteUser

getPosts

A requisição getPosts possui duas funcionalides diferentes: Caso nada seja escrito após "/posts" será retornada a lista completa de posts, como podemos ver no exemplo "getPostsF1";

getPostsF1Request

getPostsF1Response

Caso um post não cadastrado seja enviado como paramêtro, por exemplo, "/posts?q=qualquer-coisa-aqui", será retornada uma lista vazia que é referenciada por [ ]; Caso não seja inserido um "id" completo representado pelo paramêtro "q", seram retornados todos os posts que contenham os paramêtros inseridos; Caso um post cadastrado seja enviado como paramêtro, apenas ele será retornado, como podemos ver no exemplo "getPostsF2".

getPostsF2Request

getPostsF2Response

No entanto para ter acesso aos posts será necessário informar um token válido no campo "Authorization" na aba "Headers"

createPost

A requisição createPost permite ao usuário criar uma nova postagem, informando apenas o conteúdo "content" da mesma no corpo da requisição. Entretanto é necessário também informar um token válido no campo "Authorization" na aba "Headers".

createPostRequest

editPost

A requisição editPost permite ao usuário editar o conteúdo "content" da sua publicação, no entanto, algumas restrições foram implementadas para o uso dessa funcionalidade, são essas:

Apenas o dono do post pode editá-lo; Será necessário passar o token gerado no login para comprovar que a pessoa é realmente quem ela diz ser; Também é requerido o "id" específico da postagem, para ser inserido no campo "Path Variables" na aba "Params" junto ao token no campo "Authorization" na aba "Headers", e torna-se possível editar a sua publicação.

editPostRequest

likeOrDislikePost

A requisição likeOrDislikePost tem duas funcionalidades que, permitem ao usuário manifestar se gostou ou não gostou do conteúdo publicado por outra pessoa, no entanto, algumas restrições foram implementadas para o uso dessa funcionalidade, são essas:

Quem criou o post não pode dar like ou dislike no mesmo; Caso dê um like em um post que já tenha dado like, o like é desfeito; Caso dê um dislike em um post que já tenha dado dislike, o dislike é desfeito; Caso dê um like em um post que tenha dado dislike, o like sobrescreve o dislike; Caso dê um dislike em um post que tenha dado like, o dislike sobrescreve o like;

Será necessário passar o token gerado no login para comprovar que a pessoa é realmente quem ela diz ser; Também é requerido o "id" específico da postagem, para ser inserido no campo "Path Variables" na aba "Params" junto ao token no campo "Authorization" na aba "Headers", e torna-se possível editar a sua publicação. Caso queira dar like num post, basta informar "like": true, no corpo da requisição "likePostF1";

likePostF1Request

Caso queira dar dislike num post, basta informar "like": false, no corpo da requisição "dislikePostF2".

dislikePostF2Request

deletePost

A requisição deletePost permite ao usuário excluir seu post, no entanto, algumas restrições foram implementadas para o uso dessa funcionalidade, são essas:

Apenas o dono da publicação ou um administrador podem apagar um post; Será necessário passar o token gerado no login para comprovar que a pessoa é realmente quem ela diz ser; Também é requerido o "id" específico da postagem, para ser inserido no campo "Path Variables" na aba "Params" junto ao token no campo "Authorization" na aba "Headers", e torna-se possível deletar a sua publicação.

deletePostRequest


🛠 Tecnologias

As seguintes ferramentas foram usadas na construção do projeto:


🦸 Autor


Lucas Henrique Proença

Linkedin Badge


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published