Giter Club home page Giter Club logo

api-nodejs-mongo's Introduction

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":"[email protected]", "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":"[email protected]", "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":"[email protected]", "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": "[email protected]",
  "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

api-nodejs-mongo's People

Contributors

cezarj59 avatar

Stargazers

 avatar

Watchers

 avatar  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.