Seu carrinho está vazio no momento!

Introdução (3 min)
Imagine uma biblioteca. Para encontrar um livro específico, você usa seu número de identificação único. Rotas dinâmicas com parâmetros, como /:id ou /:slug, funcionam de maneira semelhante em APIs. Elas permitem acessar recursos específicos usando identificadores únicos na URL.
Este mecanismo é essencial para APIs modernas, pois possibilita a manipulação individual de recursos, como produtos, usuários ou artigos. Nesta aula, você vai dominar a criação e utilização de rotas dinâmicas com parâmetros no Express.js, aprendendo a construir APIs mais flexíveis e poderosas.
No contexto Node.js/Express, rotas dinâmicas são um componente central para o desenvolvimento de APIs RESTful, permitindo interações precisas com o backend.
Conceito Fundamental (7 min)
Rotas dinâmicas, comumente utilizando a sintaxe /:parametro, permitem definir URLs que mudam com base em valores fornecidos. O Express.js captura esses valores, chamados parâmetros de rota, e os disponibiliza para o seu código. A terminologia da indústria frequentemente se refere a eles como “route parameters” ou “URL parameters”.
Um caso de uso relevante é a recuperação de informações de um usuário específico através de seu ID: /usuarios/:id. Outro exemplo prático é a visualização de um artigo de blog através de seu slug: /blog/:slug. Essa abordagem se integra com bancos de dados, permitindo consultas específicas baseadas nos parâmetros recebidos.
As principais vantagens incluem URLs amigáveis para SEO, flexibilidade na manipulação de recursos e melhor organização da API. A desvantagem principal reside na necessidade de validar os parâmetros recebidos para garantir a segurança e evitar comportamentos inesperados.
Implementação Prática (10 min)
const express = require('express');
const app = express();
const port = 3000;
// Simulando um banco de dados (apenas para demonstração)
const usuarios = [
{ id: 1, nome: 'Maria' },
{ id: 2, nome: 'João' },
];
// Rota dinâmica com parâmetro 'id'
app.get('/usuarios/:id', (req, res) => {
const id = parseInt(req.params.id, 10); // Converte o parâmetro 'id' para inteiro
// Validação do ID: Verifica se o ID é um número e se existe no "banco de dados"
if (isNaN(id)) {
return res.status(400).json({ erro: 'ID inválido' });
}
const usuario = usuarios.find(u => u.id === id);
if (!usuario) {
return res.status(404).json({ erro: 'Usuário não encontrado' });
}
res.json(usuario);
});
// Rota dinâmica com parâmetro 'slug'
app.get('/artigos/:slug', (req, res) => {
const slug = req.params.slug;
// Simulação de busca no banco de dados com base no slug
const artigo = { slug: slug, titulo: Artigo sobre ${slug} };
res.json(artigo);
});
// Error handling genérico (melhores práticas)
app.use((err, req, res, next) => {
console.error(err.stack); // Log do erro no console
res.status(500).json({ erro: 'Erro interno do servidor' });
});
app.listen(port, () => {
console.log(Servidor rodando em http://localhost:${port});
});
npm install express
node seu-arquivo.js
Este código demonstra duas rotas dinâmicas: uma usando /usuarios/:id para buscar usuários por ID numérico e outra usando /artigos/:slug para buscar artigos por slug (texto). Note a conversão do id para inteiro e a validação da entrada. O error handling garante a estabilidade da aplicação, mesmo em HostGator Plano M.
Exercício Hands-On (5 min)
Crie uma rota dinâmica /produtos/:categoria que retorne uma lista de produtos fictícios para uma determinada categoria. Exemplo: /produtos/eletronicos. A resposta deve ser um JSON contendo a categoria e um array de nomes de produtos.
Solução:
// ... (código anterior)
app.get('/produtos/:categoria', (req, res) => {
const categoria = req.params.categoria;
const produtos = [
{ nome: ${categoria} 1 },
{ nome: ${categoria} 2 },
];
res.json({ categoria: categoria, produtos: produtos });
});
// ... (resto do código)
Teste acessando http://localhost:3000/produtos/eletronicos no seu navegador ou com uma ferramenta como Postman. Para validar, verifique se a resposta JSON contém a categoria “eletronicos” e os produtos correspondentes. Em caso de erros, revise o código e o console do Node.js.
Próximos passos: explore validação mais robusta de parâmetros, integração com banco de dados real e autenticação para proteger suas rotas.
🚀 Pronto para a próxima aula?
Continue sua jornada no desenvolvimento de APIs e domine Node.js & Express!