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

Sign up
Appearance settings

Backend - Desafio Técnico 2 - 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.

Notifications You must be signed in to change notification settings

Cezarj59/api-nodejs-mongo

Repository files navigation

API Restful em Node.js com Express e MongoDB Atlas.

Node.js Express JWT Mongoose MongoDB Atlas Render Insomnia

Visão Geral

Este projeto é uma API RESTful desenvolvida em Node.js utilizando o framework Express. A API oferece operações de cadastro (sign up), autenticação (sign in), recuperação de informações do usuário e busca de usuário autenticado. Utiliza JSON como formato de comunicação, JWT para autenticação e MongoDB Atlas como banco de dados na nuvem e Mongoose utilizado para mapeamento de dados.

Objetivos

  • Desenvolvimento de uma API RESTful em Node.js com Express
  • Implementação de operações de cadastro, autenticação, recuperação de informações e busca de usuário autenticado
  • Utilização de JSON como formato de comunicação
  • Autenticação com JWT (JSON Web Tokens)
  • Criptografia hash na senha e token para maior segurança
  • Banco de dados MongoDB Atlas na nuvem

Tecnologias Utilizadas

  • Node.js (LTS)
  • Express 4.17.1
  • JWT para autenticação
  • Mongoose (Object Data Modeling para MongoDB)
  • MongoDB Atlas para armazenamento de dados
  • Render para hospedagem
  • Insomnia para testes de API

Como Usar

  1. Clone este repositório (Opcional: Se você estiver interessado em examinar o código-fonte ou contribuir para o projeto).

  2. Configure seu ambiente de desenvolvimento com as tecnologias mencionadas.

  3. Execute a aplicação Node.js. Utilize o seguinte comando no terminal:

    npm start
    # ou
    node src/server.js
  4. Utilize os seguintes endpoints para realizar operações na API:

  • Cadastro de Usuário:

locahost:

[POST] https://localhost:3001/auth/cadastro

ou

[POST] https://api-escribo-x2y3.onrender.com/auth/cadastro
  • Autenticação de Usuário:

locahost:

[POST] https://localhost:3001/auth/login

ou

[POST] https://api-escribo-x2y3.onrender.com/auth/login

-Nota: A busca de usuários autenticados requer autenticação via Bearer Token. Certifique-se de incluir na sua requisição: Bearer TOKEN.

  • Busca de Usuários Autenticados:

locahost:

[GET] https://localhost:3001/admin/users

ou

[GET] https://api-escribo-x2y3.onrender.com/admin/users
  • Atualização de Usuário:

locahost:

[PUT] https://localhost:3001/auth/users/:id

ou

[PUT] https://api-escribo-x2y3.onrender.com/auth/users/:id

Certifique-se de que as tecnologias necessárias estejam configuradas no seu ambiente antes de utilizar os endpoints. Você pode usar ferramentas como o INSOMNIA, cURL ou POSTMAN para realizar as operações na API.

Como Testar os Endpoints

Você pode utilizar o cURL para testar os endpoints diretamente do terminal ou linha de comando. Abaixo estão alguns exemplos básicos:

Cadastro de Usuário

curl -X POST -H "Content-Type: application/json" -d '{"nome":"SeuNome", "email":"seuemail@example.com", "senha":"suasenha", "telefone":{"numero":"seunumero", "ddd":"seuddd"}}' https://api-escribo-x2y3.onrender.com/auth/cadastro

Login

curl -X POST -H "Content-Type: application/json" -d '{"email":"seuemail@example.com", "senha":"suasenha"}' https://api-escribo-x2y3.onrender.com/auth/login

Busca de Usuários Autenticados

curl -X GET -H "Authorization: Bearer TOKEN_AQUI" https://api-escribo-x2y3.onrender.com/admin/users

Atualização de Usuário (Exemplo com ID "seuid")

curl -X PUT -H "Content-Type: application/json" -H "Authorization: Bearer TOKEN_AQUI" -d '{"nome":"NovoNome", "email":"novoemail@example.com", "telefone":{"numero":"novonumero", "ddd":"novoddd"}}' https://api-escribo-x2y3.onrender.com/auth/users/seuid

Endpoints

A seguir estão os endpoints disponíveis do projeto hospedado:

{
 "nome": "string",
 "email": "string",
 "senha": "senha",
 "telefone": {
 "numero": "123456789",
 "ddd": "11"
 }
}
  • Output (sucesso):
    • Retorno com informações do usuário cadastrado
{
 "id": "GUID/ID",
 "data_criacao": "data",
 "data_atualizacao": "data",
 "ultimo_login": "data",
 "token": "GUID/JWT"
}
{
 "email": "string",
 "senha": "senha"
}
  • Output (sucesso):
    • Retorno com token de autenticação
{
"id": "GUID/ID",
"data_criacao": "data",
"data_atualizacao": "data",
"ultimo_login": "data_atualizada",
"token": "GUID/JWT"
}
  • Erros:

    • E-mail não cadastrado ou senha incorreta: { "mensagem": "Usuário e/ou senha inválidos" }
    • Senha incorreta: Status 401 com { "mensagem": "Usuário e/ou senha inválidos" }
  • Buscar Usuários (Admin)

 {
 "id": "6563873da187f9f7405a7026",
 "nome": "string",
 "email": "string",
 "iat": 1701021502,
 "exp": 1701023302
 }
  • Erros:

    • Token inválido: { "mensagem": "Não autorizado" }
    • Token expirado (mais de 30 minutos): { "mensagem": "Sessão inválida" }
  • Atualizar Usuário

{
 "nome": "Novo Nome",
 "email": "novoemail@example.com",
 "telefone": {
 "numero": "987654321",
 "ddd": "11"
 }
}
  • Output (sucesso):
    • Retorno com informações atualizadas do usuário
 {
 "mensagem": "Usuário atualizado com sucesso",
 "id": "ID",
 "data_criacao": "Data",
 "data_atualizacao": "Data_atualizada",
 "ultimo_login": "Data",
 "token": "Token"
}
  • Erros:
    • Email já Cadastrado: { "mensagem": "E-mail já existente" }

Estrutura do Projeto

A estrutura deste projeto segue a organização abaixo:

  • src: Contém o código-fonte Node.js da aplicação.
  • config: Armazena configurações específicas da aplicação.
  • controllers: Responsável por conter os controladores da lógica de negócios.
  • database: Mantém os arquivos relacionados ao banco de dados, como conexões e configurações.
  • middlewares: Contém middlewares utilizados na aplicação.
  • models: Guarda os modelos de dados utilizados na aplicação.
  • server.js: Ponto de entrada da aplicação, contendo as configurações e definição das rotas da API.

Sistema de Build com Gerenciamento de Dependências

O projeto utiliza o npm (Node Package Manager) para:

  • Gerenciamento de Dependências: Todas as dependências do projeto são definidas no arquivo package.json e podem ser instaladas usando o comando:
    npm install
    

Padronização de Código

  • ESLint: O projeto utiliza o ESLint para manter a consistência no estilo do código. Os padrões de estilo são definidos no arquivo .eslintrc.json e a verificação pode ser feita com o comando:
    npm run lint
    

Languages and Tools:

javascript nodejs express jwt mongoose mongodb npm git eslint ubuntu vscode

About

Backend - Desafio Técnico 2 - 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.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /