Uso de express.Router para modularizar rotas

O que é express.Router?

O express.Router é uma classe do Express que permite criar manipuladores de rotas modulares e montáveis. Ele funciona como uma “mini-aplicação” ou um middleware completo que pode ter as suas próprias rotas, middlewares e lógica própria, facilitando a organização do código em aplicações maiores.

Por que modularizar rotas?

  • Facilita a manutenção e organização do código.
  • Permite separar as rotas por funcionalidades ou domínios (ex: rotas de usuários, rotas de produtos, etc).
  • Reduz redundâncias ao agrupar rotas relacionadas.
  • Facilita a reutilização e testes de módulos de rota.

Como usar o express.Router para modularizar rotas?

Passo 1: Criar um módulo de rotas

Crie um ficheiro para um conjunto de rotas, por exemplo passaros.js:

const express = require('express');
const router = express.Router();

// Middleware específico para este roteador (exemplo: log de tempo)
router.use((req, res, next) => {
console.log('Hora: ', Date.now());
next();
});

// Define a rota raiz deste roteador
router.get('/', (req, res) => {
res.send('Página inicial dos pássaros');
});

// Define outra rota dentro deste roteador
router.get('/ajuda', (req, res) => {
res.send('Página de ajuda dos pássaros');
});

module.exports = router;

Passo 2: Usar o módulo de rotas na aplicação principal

No arquivo principal da aplicação (app.js), importe o roteador e monte-o em um caminho específico:

const express = require('express');
const app = express();

const passarosRouter = require('./passaros');

// Monta o roteador em /passaros
app.use('/passaros', passarosRouter);

app.listen(3000, () => {
console.log('Servidor rodando na porta 3000');
});

Resultado

Com essa configuração, o servidor responde às requisições:

  • GET /passaros → “Página inicial dos pássaros”
  • GET /passaros/ajuda → “Página de ajuda dos pássaros”

Além disso, o middleware do roteador será executado para essas rotas, exibindo o timestamp no console.

Resumo das etapas

  • Use express.Router() para criar um roteador modular.
  • Defina rotas nesse roteador como se fosse um mini-app.
  • Exporte o roteador do módulo.
  • Importe o roteador no arquivo principal e use app.use(caminho, roteador) para montar as rotas.
  • Para rotas grandes, crie tantos módulos de roteadores quanto precisar, um para cada área funcional.

Esse padrão é uma prática recomendada para manter o código de APIs e aplicações Express limpos, escaláveis e organizados.