Leodario.com

Leodario.com – Tudo sobre Tecnologia

Aula 28 – API JavaScript, Node.js e Express – Route Parameters – /:id, /:slug dynamic routes

Imagem destacada da aula de API

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!

📚 Ver todas as aulas