Skip to content

davifelix5/link-manager-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Link manager API

API para gerenciador de links feita em NodeJS com express e sequelize

Base para o projeto

Esse projeto foi feito durante a Maratona JS, uma semana intensiva de conteúdo e muito aprendizado fornecida gratuitamente pelo @emersonbrogadev

Funcionalidades

  1. Acesso ao banco de dados:
  • Nesse projeto, foi utilizado um banco de dados relacional: o MySQL
  • Para fazer o acesso ao banco de dados, foi usada a biblioteca sequelize
  • Para criar tabelas, foram usados os models do sequelize
  • Para alterar a estrutura do banco de dados, foram utilizadas as migrations do sequelize, que permite que haja um histórico de mudanças no banco de dados, facilitando o desenvolvimento
  • Para alterar, inserir e acessar dados, o Sequelize ORM permite que isso seja feito de maneira abstrata, sem a necessidade da escrita de raw queries para o banco
  1. Middleware para padronização de respostas
  • Foi implementada um middleware para padronizar as respostas dadas pela aplicação a partir dos métodos res.jsonOk, res.jsonBadRequest, res.jsonNotFound, res.jsonUnauthorized, res.jsonServerError
  • Toda resposta tem os status data, metadata, status e message
  1. Acesso aos links pela rota /links
  • /links/add-link (método POST): adiciona um novo link, relacionando-o, no banco, com o usuário cujo token foi passados pelos headers em um relacionamento de 1..n (um para muitos)
  • /links/ (método GET): lista todos os links do usuário cujo token foi passado nos headers
  • /links/:id (método GET): retorna o link com id :id do usuário cujo token foi passado nos headers
  • /links/:id (método PUT): muda o link com id :id para os dados passados no body do usuário cujo token foi passado nos headers
  • /links/:id (método DELETE): deleta do banco de dados o link com id :id do usuário cujo token foi passado nos headers
  • Para as funcionalidades de read, update e delete, caso o link passado nos route params não pertença ao usuário do token enviado, é retornado status 404
  1. Autenticação com JWT na rota /auth
  • /auth/sign-up (método POST): permite que seja feito com cadastro de um novo usuário, já retornando o token e o refresh token no metadata da resposta
  • /auth/login (método GET): permite o login de um usuário, também retornado o token e o refresh token no metadata da resposta. Os dados são transmitidos pelo padrão Basic Auth, pelos headers da requisição, ganrantindo mais segurança.
  • /auth/refresh (método POST): recebe o refresh token nos headers e retorna um novo token
  • Validação: feita a partir da biblioteca @hapi/Joi e implementada a partir de um middleware, retornando mensagens traduzidas que foram especificadas em um arquivo messages.json
  • Toda vez que um usuário é cadastrado, sua senha é criptografada pela biblioteca bcrypt e seus dados são registrados no banco de dados
  • Foi implementado com middleware que pega o token dos headers e verifica a qual usuário ele corresponse, associando o ID desse usuário ao atributo req.accountId, que pode ser acessado em todas as rotas
  1. Upload de imagens com a biblioteca multer:
  • O nome das imagens é diferenciado com a adição de um hash
  • Apenas são aceitos arquivos de imagem com as extensões especificadas em um array
  • As imagens são enviadas para a pasta /uploads e retornadas pelas rota /uploads como arquivos estáticos do express
  • Foi implementado um middleware que retorna uma imagem apenas se ela pertencer ao usuário cujo token é passados pelos headers, caso contrário retorna 404

About

Aplicação para gerenciar links feita com NodeJS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published