Capítulo 17: Rotas e Parâmetros no Express 🦔💨
Neste capítulo, vamos aprender a criar múltiplas rotas e a receber parâmetros dinâmicos pela URL usando o Express, com o tema Sonic!
📖 O que são Rotas e Parâmetros?
Rotas são os caminhos que o usuário pode acessar no nosso servidor (ex: /sonic, /tails).
Parâmetros de rota são partes variáveis da URL que usamos para identificar um recurso (ex: /personagem/sonic ou /personagem/tails).
📖 Exemplo Guiado: Velocidade dos Personagens
Vamos criar um servidor que retorna a velocidade de um personagem baseado no nome passado na URL.
- Crie o arquivo
velocidade_sonic.jsna pastasrc/:
const express = require('express');
const app = express();
// Rota com parâmetro dinâmico (:nome)
app.get('/velocidade/:nome', (req, res) => {
// Pegando o parâmetro da URL
const nomePersonagem = req.params.nome;
let velocidade = 0;
if (nomePersonagem.toLowerCase() === "sonic") {
velocidade = 1000;
} else if (nomePersonagem.toLowerCase() === "tails") {
velocidade = 500;
} else {
velocidade = 100;
}
res.send(`A velocidade de ${nomePersonagem} e: ${velocidade} km/h`);
});
app.listen(3000, () => {
console.log("Servidor do Sonic rodando em http://localhost:3000");
});🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado e execute:
node velocidade_sonic.js - Acesse no navegador:
http://localhost:3000/velocidade/sonic - Tente também:
http://localhost:3000/velocidade/tails
Resultado Esperado: “A velocidade de sonic e: 1000 km/h”
📊 Ilustração Visual: Parâmetros de Rota
Veja como a URL é mapeada:
graph LR A["URL: /velocidade/sonic"] --> B["req.params.nome = 'sonic'"]
🛠️ Prática Obrigatória 1: Rota de Fases
Crie uma rota /fase/:numero que responda qual é a fase correspondente (ex: se o número for 1, responde “Green Hill Zone”. Se for 2, responde “Chemical Plant Zone”).
🔑 Gabarito de Código
Prática 1: fases_sonic.js
const express = require('express');
const app = express();
app.get('/fase/:numero', (req, res) => {
const numero = req.params.numero;
if (numero === "1") {
res.send("Fase 1: Green Hill Zone");
} else if (numero === "2") {
res.send("Fase 2: Chemical Plant Zone");
} else {
res.send("Fase desconhecida!");
}
});
app.listen(3000, () => {
console.log("Servidor rodando!");
});📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)