Skip to content

Neste repositório desenvolvi um CRUD em uma API REST de Users com integração ao banco de dados MongoDB.

Notifications You must be signed in to change notification settings

gabiazevedo/API_REST_Users

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 

Repository files navigation

developeRobot

API REST Users 🚀

Essa aplicação tem como objetivo implementar um banco de dados que armazene os dados de acesso dos usuários de um suposto sistema e uma API para interação com esses dados.

A API deve conter 4 (quatro) rotas:

  • - POST - Create
  • - GET - Read
  • - PUT - Update
  • - DELETE - Delete

Requisitos

  • O banco de dados deve ser criado utilizando MongoDB.
  • A API deve ser desenvolvida utilizando Node.js.
  • O projeto deve ser enviado junto de um arquivo README com explicações sobre como executar o mesmo.
  • Utilizar o padrão REST para o desenvolvimento da API.

Orientações para start da aplicação 📋

  1. Clone o repositório
  • git clone git@github.com:gabiazevedo/Teste_Back_End.git.
  1. Instale as dependências
  • npm install
  1. Crie um arquivo .env na pasta raiz do projeto para configurar as informações de conexão com o banco de dados.
PORT=3000
DB_URL=mongodb://localhost:27017
DB_NAME=user_info
  1. Para facilitar o fluxo de desenvolvimento usei o Nodemon, que reinicia a aplicação toda vez que se faz necessário editar e salvar arquivos. Para usá-lo basta rodar o comando: npm i nodemon -D. Após instalação do pacote, rodar o comando npm run dev no terminal e a aplicação já estará conectada ao banco de dabos.

  2. As instruções para popular o banco de dados estão no arquivo userDataBase.js.

Testando as requisições 🔌

Para testar a aplicação, basta fazer uma requisição usando o próprio navegador, colocando a URL http://localhost:3000/user (Verbo GET para trazer todos os usuários cadastrados no banco de dados). Porém como nem todo tipo de requisição HTTP pode ser feita diretamente pelo navegador, é recomendado utilizar algum cliente HTTP. Os mais famosos são o Postman e o Insomnia.

Existe uma terceira possibilidade: usar um comando chamado httpie que permite fazer uma requisição direto pelo terminal. Para instalar o HTTPie basta rodar sudo apt install httpie no terminal. Com o httpie instalado basta usar os comandos abaixo para testar as rotas.

- GET /user - Rota que faz a leitura de todos os dados disponíveis no banco

http GET :3000/user

- GET /user/:id - Rota que busca o usuário pelo seu identificador único

http GET :3000/user/6165d147d38ed41b25e3fa10

- POST /user - Rota que cria um novo usuário - O campo lastAccess é criado dinâmicamente, introduzindo no banco de dados a current date como data de último acesso.

http POST :3000/user/ name='Gabriela Azevedo' userName='gabiazevedo' password='123adbgfc'

- PUT /user/:id - Rota que atualiza as informações do usuário filtrado pelo ID, retornando o documento atualizado no banco de dados.

http PUT :3000/user/6165d147d38ed41b25e3fa10 name='Robert C. Martin' userName='clean_code' password='Rob2021'

- DELETE /user/:id - Rota que deleta o usuário de acordo com o ID selecionado

http DELETE :3000/user/6165d147d38ed41b25e3fa15

Detalhes do desenvolvimento 👩‍💻

  • Usei o conceito de Arquitetura de Software (MSC) - Model Service Controller.

  • Camada de Modelo (M): Arquivos onde iremos executar as operações do banco de dados; criar conexões e executar queries.

  • Camada de Serviço (S): Arquivos que estruturam as regras de negócio; chama os métodos definidos na camada de modelo.

  • Camada de Controladores (C): Interface mais próxima da pessoa usuária ou de uma requisição, vai processar e chamar funções da camada de serviço.

  • Apliquei a validação dos dados de entrada (IN) da API com a biblioteca Joi.

  • Implementei o parseamento do campo id para melhor leitura dos dados.

  • O "lastAccess" cria e atualiza a data de último acesso com a data corrente e de maneira dinâmica.

Próximas implementações 💯

  • Adicionar rota '/login' criando token de validação e autenticação dos dados 'userName' e 'password'.
  • Implementação da validação para as outras rotas.

Desenvolvido por:

💬 Gabriela Azevedo

About

Neste repositório desenvolvi um CRUD em uma API REST de Users com integração ao banco de dados MongoDB.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published