Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

caioagiani/api-restful

Open more actions menu

Repository files navigation

API RESTful

API RESTful - NoSQL MongoDB

Status License

Apresentação:

Projeto BackEnd: API RESTful seguindo conceito MVC utilizando Stack NodeJS, padronizado o código com Eslint e Prettier.

Pacotes principais: Express responsável pela criação de rotas, Middleware JWT para persistência do token por 30minutos, mantendo a segurança e credêncial do usuário, ORM Mongoose para conexão com banco de dados NoSQL (MongoDB) e por fim, Jest para realização de tests.

Rotas mapeada do arquivo exportado Insominia: Insomnia.json

Requisitos

Sign up

  • Este endpoint deverá receber um usuário com os seguintes campos: nome, email, senha e uma lista de objetos telefone.
{
  "nome": "string",
  "email": "string",
  "senha": "senha",
  "telefones": [
    {
     "numero": "123456789",
     "ddd": "11"
    }
  ]
}
  • Usar status codes de acordo
  • Em caso de sucesso irá retornar um usuário mais os campos:
  • id: id do usuário (pode ser o próprio gerado pelo banco, porém seria interessante se fosse um GUID
  • data_criacao: data da criação do usuário
  • data_atualizacao: data da última atualização do usuário
  • ultimo_login: data do último login (no caso da criação, será a mesma que a criação)
  • token: token de acesso da API (pode ser um GUID ou um JWT)
  • Caso o e-mail já exista, deverá retornar erro com a mensagem "E-mail já existente".
  • Token deverá ser persistido junto com o usuário

Sign in

  • Este endpoint irá receber um objeto com e-mail e senha.
  • Caso o e-mail exista e a senha seja a mesma que a senha persistida, retornar igual ao endpoint de sign_up.
  • Caso o e-mail não exista, retornar erro com status apropriado mais a mensagem "Usuário e/ou senha inválidos"
  • Caso o e-mail exista mas a senha não bata, retornar o status apropriado 401 mais a mensagem "Usuário e/ou senha inválidos"

Buscar usuário

  • Chamadas para este endpoint devem conter um header na requisição de Authentication com o valor "Bearer {token}" onde {token} é o valor do token passado na criação ou sign in de um usuário.
  • Caso o token não exista, retornar erro com status apropriado com a mensagem "Não autorizado".
  • Caso o token exista, buscar o usuário pelo user_id passado no path e comparar se o token no modelo é igual ao token passado no header.
  • Caso não seja o mesmo token, retornar erro com status apropriado e mensagem "Não autorizado"
  • Caso seja o mesmo token, verificar se o último login foi a MENOS que 30 minutos atrás.
  • Caso não seja a MENOS que 30 minutos atrás, retornar erro com status apropriado com mensagem "Sessão inválida".
  • Caso tudo esteja ok, retornar o usuário.

Instação:

  • Variável de ambiente .env.example:
SECRET_JWT=XXX
MONGO_CONN=mongodb+srv://<user>:<pass>@cluster0-okpdn.gcp.mongodb.net/api
  • Instalar dependências: yarn install ou npm install
  • Iniciar aplicação em modo de desenvolvimento: yarn dev:start ou npm run dev:start.
  • Deploy da aplicação: yarn start
  • Tests Jest: yarn test

Rotas

POST localhost:3333/user/create

{
   "name": "Caio Agiani",
   "email": "caio.agiani14@gmail.com",
   "password": "123",
   "telefones": [
      {
	"numero": "999865802",
	"ddd": "11"
      },
      {
	"numero": "999865802",
	"ddd": "11"
      }
   ]
}

POST localhost:3333/login

{
   "email": "caio.agiani14@gmail.com",
   "password": "123"
}

GET localhost:3333/user/:user_id

Observação importante: rota /user/:user_id é necessário passsar no header o parâmetro authentication contendo o Token Bearer coletado na rota login

Test

caio-agiani in api-restful on  master [!] took 2s  yarn test
yarn run v1.22.5
$ jest --setupFiles dotenv/config --detectOpenHandles --forceExit
 PASS  tests/api.test.js
  Authentication
     should create session authentication (1233 ms)
  Login
     should create user session (131 ms)
  User
     should list user by id (9 ms)

Test Suites: 1 passed, 1 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        2.136 s
Ran all test suites.
Done in 2.58s.

Contato

About

API RESTful - NoSQL MongoDB, JWT & Jest

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.