Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine um restaurante. Você interage com ele de diferentes maneiras: consultando o cardápio (GET), fazendo um pedido (POST), alterando um pedido existente (PUT) e cancelando um pedido (DELETE). Essas ações são análogas aos verbos HTTP que usamos em APIs. Dominar o roteamento com esses verbos é vital para a construção de APIs modernas, robustas e eficientes.
Nesta aula, você vai dominar os fundamentos do roteamento em APIs RESTful utilizando Node.js com Express. Compreenderá como mapear requisições HTTP para funções específicas no seu servidor, possibilitando a criação de APIs que respondem de maneira adequada a diferentes ações do cliente.
Dentro do ecossistema Node.js/Express, o roteamento é a espinha dorsal da comunicação entre cliente e servidor, permitindo a organização e o processamento eficiente das solicitações recebidas.
Conceito Fundamental (7 min)
O roteamento define como uma aplicação responde a requisições do cliente para uma URL específica com um método HTTP específico (GET, POST, PUT, DELETE). Em termos práticos, é a associação de uma rota (endpoint) com uma função controladora (handler) que processa a lógica de negócio.
Em produção, imagine um e-commerce. Um GET /produtos lista os produtos disponíveis, POST /carrinho adiciona um produto ao carrinho, PUT /carrinho/:id atualiza a quantidade de um produto e DELETE /carrinho/:id remove um item do carrinho. A escolha do verbo HTTP torna a API semanticamente clara e previsível.
O roteamento se integra com diversas tecnologias, como middlewares para autenticação, autorização e logging, além de frameworks de persistência de dados como o MongoDB. Uma das principais vantagens do roteamento bem estruturado é a organização e manutenibilidade do código. A desvantagem de um roteamento mal planejado é a dificuldade em escalar e depurar a aplicação.
Implementação Prática (10 min)
const express = require('express');
const app = express();
const port = 3000;
// Simulando um banco de dados em memória
let produtos = [];
app.use(express.json()); // Middleware para lidar com dados JSON
// GET /produtos - Lista todos os produtos
app.get('/produtos', (req, res) => {
res.json(produtos);
});
// POST /produtos - Cria um novo produto
app.post('/produtos', (req, res) => {
const novoProduto = req.body;
produtos.push(novoProduto);
res.status(201).json(novoProduto); // 201 Created
});
// PUT /produtos/:id - Atualiza um produto existente
app.put('/produtos/:id', (req, res) => {
const id = parseInt(req.params.id);
const produtoAtualizado = req.body;
produtos = produtos.map(p => (p.id === id ? produtoAtualizado : p));
res.json(produtoAtualizado);
});
// DELETE /produtos/:id - Remove um produto
app.delete('/produtos/:id', (req, res) => {
const id = parseInt(req.params.id);
produtos = produtos.filter(p => p.id !== id);
res.sendStatus(204); // 204 No Content
});
// Error handling básico
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send('Erro interno do servidor!');
});
app.listen(port, () => {
console.log(Servidor rodando em http://localhost:${port});
});
npm install express
node index.js
Exercício Hands-On (5 min)
Crie uma rota GET /produtos/:id que retorna um produto específico com base no ID. Lembre-se de tratar o caso em que o produto não é encontrado.
Solução:
// ... código anterior ...
// GET /produtos/:id - Retorna um produto específico
app.get('/produtos/:id', (req, res) => {
const id = parseInt(req.params.id);
const produto = produtos.find(p => p.id === id);
if (!produto) {
return res.status(404).send('Produto não encontrado'); // 404 Not Found
}
res.json(produto);
});
// ... código posterior ...
Teste a nova rota com diferentes IDs, incluindo IDs inválidos. Verifique se as respostas do servidor estão corretas (código de status e corpo da resposta). Para aprofundar seus conhecimentos, explore middlewares para validação de dados e autenticação.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!