,

Como criar uma API RESTful usando Node.js e MongoDB para realizar operações CRUD com Node, Express e Mongoose

Posted by


Como criar uma API RESTful com Node.js e MongoDB

As APIs RESTful (Representational State Transfer) são um padrão de arquitetura muito utilizado para o desenvolvimento de aplicações web. Elas permitem que diferentes plataformas se comuniquem de forma simples e eficiente, utilizando os protocolos HTTP e JSON.

Neste tutorial, vamos aprender a criar uma API RESTful completa utilizando o Node.js, Express e o MongoDB. O Node.js é uma plataforma de desenvolvimento backend escalável e flexível, enquanto o MongoDB é um banco de dados NoSQL orientado a documentos.

Passo 1: Configuração inicial

Antes de começar a desenvolver a API, precisamos instalar as dependências necessárias e criar a estrutura básica do projeto. Comece criando uma nova pasta e abra um terminal na pasta raiz do projeto.

$ mkdir api-node-mongodb
$ cd api-node-mongodb

Em seguida, inicialize o projeto Node.js executando o seguinte comando:

$ npm init -y

Isso irá criar o arquivo package.json, que é utilizado para gerenciar as dependências do projeto.

Agora, vamos instalar as dependências necessárias para a nossa API:

$ npm install express mongoose

O Express é um framework minimalista para a criação de servidores HTTP em Node.js, enquanto o Mongoose é uma biblioteca que simplifica a interação com o MongoDB.

Passo 2: Configuração do servidor Express

Após instalar as dependências, vamos criar um arquivo chamado index.js para configurar o servidor Express. Abra o arquivo index.js no seu editor de texto favorito e adicione o seguinte código:

const express = require('express');
const app = express();
const port = 3000;

app.listen(port, () => {
  console.log(`Servidor rodando na porta ${port}`);
});

Este código define um servidor Express simples que escuta na porta 3000. Para iniciar o servidor, execute o seguinte comando:

$ node index.js

Se tudo estiver configurado corretamente, você deverá ver a mensagem “Servidor rodando na porta 3000” no console.

Passo 3: Configuração do MongoDB

Agora que o servidor Express está rodando, vamos configurar a conexão com o MongoDB. Crie um novo arquivo chamado db.js dentro da pasta do projeto e adicione o seguinte código:

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/meu_banco', { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    console.log('Conectado ao MongoDB');
  })
  .catch(err => {
    console.error('Erro ao conectar ao MongoDB', err);
  });

Este código utiliza a biblioteca Mongoose para estabelecer a conexão com o banco de dados MongoDB. Certifique-se de ter o MongoDB instalado em sua máquina e que o serviço esteja rodando corretamente.

Passo 4: Implementação do CRUD

Com o servidor e o banco de dados configurados, agora podemos implementar as operações CRUD (Create, Read, Update, Delete) da nossa API. Vamos utilizar o modelo de “Tarefa” como exemplo.

Crie um novo arquivo chamado tarefa.js dentro da pasta do projeto e adicione o seguinte código:

const mongoose = require('mongoose');

const tarefaSchema = new mongoose.Schema({
  nome: {
    type: String,
    required: true
  },
  descricao: {
    type: String,
    required: true
  },
  concluida: {
    type: Boolean,
    default: false
  }
});

const Tarefa = mongoose.model('Tarefa', tarefaSchema);

module.exports = Tarefa;

Este código define o esquema e o modelo da Tarefa utilizando o Mongoose. Agora, podemos criar as rotas para a nossa API em index.js:

const express = require('express');
const app = express();
const port = 3000;

const Tarefa = require('./tarefa');

app.use(express.json());

app.get('/tarefas', async (req, res) => {
  const tarefas = await Tarefa.find();
  res.json(tarefas);
});

app.post('/tarefas', async (req, res) => {
  const { nome, descricao } = req.body;
  const tarefa = new Tarefa({ nome, descricao });
  await tarefa.save();
  res.json(tarefa);
});

app.put('/tarefas/:id', async (req, res) => {
  const { id } = req.params;
  const { nome, descricao, concluida } = req.body;
  const tarefa = await Tarefa.findByIdAndUpdate(id, { nome, descricao, concluida });
  res.json(tarefa);
});

app.delete('/tarefas/:id', async (req, res) => {
  const { id } = req.params;
  await Tarefa.findByIdAndDelete(id);
  res.json({ message: 'Tarefa excluída com sucesso' });
});

app.listen(port, () => {
  console.log(`Servidor rodando na porta ${port}`);
});

Este código define as rotas para as operações CRUD da Tarefa. Por exemplo, a rota GET /tarefas retorna todas as tarefas do banco de dados, a rota POST /tarefas cria uma nova tarefa, a rota PUT /tarefas/:id atualiza uma tarefa existente e a rota DELETE /tarefas/:id exclui uma tarefa.

Agora, você pode iniciar o servidor novamente executando o seguinte comando:

$ node index.js

Parabéns! Agora você possui uma API RESTful completa com Node.js, Express e MongoDB. Você pode testar as rotas utilizando ferramentas como o Postman ou o cURL.

Neste tutorial, aprendemos a criar a estrutura básica de uma API RESTful com Node.js, Express e MongoDB, configuramos a conexão com o banco de dados e implementamos as operações CRUD. Este é apenas o começo – você pode expandir e personalizar essa API de acordo com as necessidades do seu projeto.

0 0 votes
Article Rating
21 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Matheus Battisti - Hora de Codar
1 year ago

⭐ Conheça a nossa plataforma de cursos: https://www.horadecodar.com.br/comunidade-hora-de-codar/

GABIROVSKII
1 year ago

Adorei o vídeo cara sensacional!!!!!

Bela Arte Diversão
1 year ago

mongose é tipo jpa?

BRUNO HENRIQUE
1 year ago

Qual linguagem você esta usando neste curso?

Fábio Ferreira
1 year ago

Bastante útil, obrigado 🙂

welder daniel silva
1 year ago

Matheus vc é demais, perfeito nas explicacões, didatica fantastica, parabens e obrigado por nos ajudar

Jéssica Araujo
1 year ago

Agora estou mais empolgada em aprender.. Gostei, obrigada !

Paulo Da Silva
1 year ago

Meu professor favorito, continue com este trabalho❤

Davi de Oliveira
1 year ago

Quais as vantagens de acessar o banco via node e não no back-end. Somente uma decisão de projeto ou para algumas soluções é muito mais vantajoso?

Luφuɨɴhas pmw
1 year ago

Olá Matheus, estou fazendo um script aq acompanhando o tutorial e percebi que na hora de copiar o código de conexão ele me deu a opção de visualizar o código de exemplo e lá ele usa o pacote mongodb ao invés de mongoose, seria alguma atualização? pode me explicar a diferença? valeu

FABIANO ANDRADE
1 year ago

excelente explicação!

Rodrigo Serrasqueiro Ricardo
1 year ago

Gostaria de agradecer muito pelo conteúdo e por compartilhar seu conhecimento assim de forma gratuita. Estou trabalhando em um projeto novo e seu vídeo me ajudou muito, até porque não estou habituado com mongoDB e mongoose. Valeu demais!!!

Lucas Almada
1 year ago

Conteúdo incrivel, didática maravilhosa! Obrigado por compartilhar seu conhecimento, Matheus 🙏

Isaac Mateus
1 year ago

Eu não consigo comunicar com o postman nem com o navegador, aparece que a conexão foi recusada, já verifiquei firewall, o código, refiz o procedimento 3x já, limpei o cache do npm, e não consigo nem mandar um get.

Mateus Alves
1 year ago

VOCÊ É INCRÍVEL!!! Muito obrigado por tudo que faz por nós professor. 🚀

Filipe
1 year ago

Um excelente professor, explica ponto a ponto. Já comprei o curso no udemy.

yBello
1 year ago

Galera quem estiver com o erro = Error: querySrv ENODATA _mongodb.
ou o banco de dados não conectando como o meu.
para resolver eu alterei o link de conexão do node para "2.2.12 or later" ou seja
após clicar em connect e depois em connect your application,
alterar a versão para do node para "2.2.12 or later".
~ 04/04/2023

Rômulo Nunes
1 year ago

Muito bom!!!

Juliano Mueloschat
1 year ago

Estudei o cronômetro, list to-do e agora concluí esse API RESTful com Node.js e MongoDB.
Agora vou ver se encontro algum vídeo front+back. Valeu pelo

Marcio Oliveira
1 year ago

Esse curso aqui já não é avançado não?