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.
⭐ Conheça a nossa plataforma de cursos: https://www.horadecodar.com.br/comunidade-hora-de-codar/
Adorei o vídeo cara sensacional!!!!!
mongose é tipo jpa?
Qual linguagem você esta usando neste curso?
Bastante útil, obrigado 🙂
Matheus vc é demais, perfeito nas explicacões, didatica fantastica, parabens e obrigado por nos ajudar
Agora estou mais empolgada em aprender.. Gostei, obrigada !
Meu professor favorito, continue com este trabalho❤
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?
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
excelente explicação!
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!!!
Conteúdo incrivel, didática maravilhosa! Obrigado por compartilhar seu conhecimento, Matheus 🙏
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.
VOCÊ É INCRÍVEL!!! Muito obrigado por tudo que faz por nós professor. 🚀
Um excelente professor, explica ponto a ponto. Já comprei o curso no udemy.
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
Muito bom!!!
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
Esse curso aqui já não é avançado não?