Giter Site home page Giter Site logo

desafiotecnicoescribo's Introduction

🚧 Desafio Técnico Backend 2

Esse é um projeto de criação de uma API RESTfull, utilizando as tecnologias principais o Node.js, Express.js, MongoDB, Mongoose,JWT, Jest, Gulp e JsHint, hospedado no Render.com e no Railway.app.

⚙ Proposta

Desenvolver uma API RESTful para autenticação de usuários, que permita operações de cadastro (sign up), autenticação (sign in) e recuperação de informações do usuário.

💻 Documentação da API

- Cadastro de usuário -

  POST /usuario/cadastro

Headers da requisição

Header Valor Descrição
- - -

Body da requisição

Parâmetro Tipo Descrição
nome string Obrigatório.
email string Obrigatório.
senha string Obrigatório.
telefones array Obrigatório. Deve ser do tipo: {"numero": string, "ddd": string}

✅ SUCESSO ✅ - Retorna os dados do usuário cadastrado (id, data da criação, data de atualização, ultimo login e um token).

❌ ERRO ❌ - Caso tenha um e-mail já cadastrado igual ao que o usuário informou no cadastro, a mensagem a seguir é exibida: { mensagem: 'E-mail já existente.' }

- Login de usuário -

  POST /usuario/login

Headers da requisição

Header Valor Descrição
- - -

Body da requisição

Parâmetro Tipo Descrição
email string Obrigatório. Email cadastrado anteriormente
senha string Obrigatório. Senha cadastrada anteriormente

✅ SUCESSO ✅ - Retorna os dados do usuário cadastrado (id, data da criação, data de atualização, ultimo login e um token).

❌ ERRO ❌ - Caso a senha e/ou e-mail fornecidos sejam incorreto, a mensagem a seguir é exibida: { mensagem: 'Usuário e/ou senha inválidos' }

- Busca de usuário -

  GET /usuarios/buscar

Headers da requisição

Header Valor Descrição
Authentication Bearer {token} Token do usuário

Body da requisição

Parâmetro Tipo Descrição
- - -

✅ SUCESSO ✅ - Retorna os dados do usuário cadastrado (id, data da criação, data de atualização, ultimo login e o token).

❌ ERRO ❌ - Caso não tenha o token, erro: { mensagem: 'Não autorizado - Token não fornecido' }

❌ ERRO ❌ - Caso o token tenha passado de seu tempo: { mensagem: 'Sessão inválida - Token expirado' }

❌ ERRO ❌ - Caso o token não seja válido: { mensagem: 'Não autorizado - Token inválido' }

🐛 Importando e testando API

Importando a API, que está disponivel no Drive.

Importando testes para o Insomnia

Testando API, em todas suas rotas e casos que podem acontecer.

Testando rotas no Insomnia

🎯 Requisitos atendidos

  • Persistência de dados
  • Sistema de build com gerenciamento de dependências.
  • Task runner para build.
  • Padronização de estilo (ex: jsHint/jsLint).
  • Framework: Express, Hapi, ou similar.
  • JWT como token.
  • Testes unitários.
  • Criptografia hash na senha e token.

📦 Deploy

Deploy realizado no Render e também na Railway, com a finalidade de evitar adversidades.

Em meus testes o Railway se mostrou mais estável, dê preferência a ele.

API rodando na URL: https://crud-estribo.onrender.com/ e também na https://crudescribo.up.railway.app/

Exemplo de utilização: https://crud-estribo.onrender.com/usuario/cadastro ou https://crudescribo.up.railway.app/usuario/cadastro

O cabeçalho (header) e o corpo (body) da requisição devem ser fornecidos para realizar a solicitação. As solicitações podem ser testadas por meio de um framework para desenvolvimento/teste de API Clients. O Postman e o Insomnia são dois ótimos exemplos. Para este caso, utilizei o Insomnia. O arquivo de importação no insomnia para realizar os testes está no Drive tanto para a URL do Railway quanto Render.

Licença

MIT

desafiotecnicoescribo's People

Contributors

higorxi avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.