Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um armário de arquivos. Você precisa criar novas pastas, ler os documentos existentes, atualizar informações antigas e, às vezes, descartar o que não é mais necessário. As operações CRUD (Create, Read, Update, Delete) são exatamente isso para suas APIs: a maneira como você interage com os dados.
Dominar o CRUD é essencial para construir APIs modernas e eficientes. Nesta aula, você vai praticar a implementação dessas quatro operações fundamentais usando Node.js e Express, construindo uma API simples para gerenciar uma lista de livros.
No contexto do ecossistema Node.js/Express, as operações CRUD são a base para manipular dados persistidos, geralmente em um banco de dados. Aprenderemos a criar rotas que respondem a requisições HTTP específicas para executar cada operação.
Conceito Fundamental (7 min)
CRUD representa as quatro operações básicas de persistência de dados: Criar (Create), Ler (Read), Atualizar (Update) e Deletar (Delete). Cada operação corresponde a um verbo HTTP:
- POST: Criar um novo recurso.
- GET: Ler um recurso existente.
- PUT/PATCH: Atualizar um recurso existente (PUT para substituição completa, PATCH para atualização parcial).
- DELETE: Deletar um recurso existente.
Imagine um sistema de gerenciamento de usuários. Você usa POST para cadastrar um novo usuário, GET para visualizar os dados de um usuário específico, PUT ou PATCH para modificar as informações do usuário e DELETE para remover um usuário do sistema.
Essas operações se integram com tecnologias como bancos de dados (MongoDB, PostgreSQL, MySQL) e frameworks de frontend (React, Angular, Vue.js) para construir aplicações web completas.
A principal vantagem do CRUD é sua simplicidade e organização. A desvantagem é que, em cenários complexos, pode ser necessário refinar as operações para otimizar o desempenho.
Implementação Prática (10 min)
const express = require('express');
const app = express();
const port = 3000;
// Simulando um banco de dados (em um cenário real, use um banco de dados)
let livros = [];
app.use(express.json()); // Middleware para processar JSON
// CREATE - Criar um novo livro
app.post('/livros', (req, res) => {
const novoLivro = req.body;
livros.push(novoLivro);
res.status(201).json(novoLivro); // 201 Created
});
// READ - Ler todos os livros
app.get('/livros', (req, res) => {
res.json(livros);
});
// READ - Ler um livro específico pelo ID
app.get('/livros/:id', (req, res) => {
const id = parseInt(req.params.id);
const livro = livros.find(l => l.id === id);
if (!livro) return res.status(404).json({ message: 'Livro não encontrado' }); // 404 Not Found
res.json(livro);
});
// UPDATE - Atualizar um livro pelo ID (usando PUT para substituição completa)
app.put('/livros/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = livros.findIndex(l => l.id === id);
if (index === -1) return res.status(404).json({ message: 'Livro não encontrado' });
livros[index] = req.body;
res.json(livros[index]);
});
// DELETE - Deletar um livro pelo ID
app.delete('/livros/:id', (req, res) => {
const id = parseInt(req.params.id);
const index = livros.findIndex(l => l.id === id);
if (index === -1) return res.status(404).json({ message: 'Livro não encontrado' });
livros.splice(index, 1);
res.status(204).send(); // 204 No Content
});
// Iniciar o servidor
app.listen(port, () => {
console.log(Servidor rodando em http://localhost:${port});
});
npm install express
node seu_arquivo.js
Exercício Hands-On (5 min)
Desafio: Implemente a operação PATCH para atualizar parcialmente um livro. Por exemplo, permitir a alteração apenas do título do livro sem modificar os outros campos.
Solução:
app.patch('/livros/:id', (req, res) => {
// ... (código similar ao PUT, mas atualizando apenas os campos presentes no req.body)
});
Teste: Utilize um cliente REST como Postman ou Insomnia para testar as diferentes operações CRUD. Crie um livro, leia a lista de livros, atualize um livro (total e parcialmente) e, por fim, delete um livro.
Troubleshooting: Verifique se o servidor está rodando corretamente. Certifique-se de que os dados enviados no corpo das requisições (POST, PUT, PATCH) estão no formato JSON correto.
Próximos passos: Integre sua API com um banco de dados real para persistir os dados. Explore middlewares para validação de dados, autenticação e autorização. Implemente logging mais robusto utilizando bibliotecas como Winston ou Pino.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!