Roteiro Modular
Imagine este cenário: Tem uma loja que vende animais de estimação, e um cliente quer comprar-lhe coelhos e gatos.
Se utilizar os métodos básicos de encaminhamento definidos acima, o código terá o seguinte aspecto:
Notificação de que escrevemos as mesmas rotas várias vezes.
No entanto, escrever as rotas repetidamente aumenta a redundância e os erros de digitação. Além disso, é útil tornar o nosso código mais modular, pois é uma boa prática.
Como programador, quer sempre fazer o seu código parecer mais limpo. Para facilitar a leitura do código acima, podemos usar dois métodos.
Usar app.route
É aqui que app.route entra. Escreverá o caminho uma vez, e poderá encadear vários manipuladores de rotas.
Pode implementar app.route da seguinte forma:
app.route(PATH)
.get(callback)
.post(callback)
//can add more HTTP requests (.put, .delete, etc)
Podemos agora reescrever o código :
O código parece mais limpo, e teve de introduzir a rota para cada pedido HTTP apenas uma vez.
Contudo, há mais uma advertência: o parâmetro username existe em todas as rotas. A digitação username uma e outra vez ainda encoraja a digitação e redundâncias. E se pudéssemos torná-lo ainda mais modular?
express.Router()
Podemos usar express.Router() para criar manipuladores de rotas modulares e montáveis. A Router instance é um sistema completo de middleware e encaminhamento, razão pela qual é frequentemente referido como um “mini-app.”
Só precisamos de especificar o ponto de partida, e a Router instance tratará do resto para nós.
Para usar app.Router(), temos de criar um módulo separado, instanciar uma instância de app.Router, e depois usar module.exports para exportar a instância.
Para mais detalhes sobre a utilização de module.exports, ver o meu artigo anterior.
Neste exemplo, trataremos apenas de um caminho simples que conteria os parâmetros username e id.
In routerExample.js:
Usamos router.route(), que é semelhante a app.route. O módulo definido diz: “Desde que o caminho termine com /:username/:id, executar o seguinte código conforme definido.”
Para o utilizar, utilizar outro módulo, main.js:
Como dizem os comentários, usamos app.use para dizer routeExample.js para executar as funções que têm rotas a partir do primeiro parâmetro. O primeiro parâmetro pode ser denominado como um ponto de partida. Portanto, o caminho será starting point + PATH defined by router.
Por exemplo, de acordo com a linha 6, vamos agora tratar de pedidos de GET e POST que começam com ‘/cats’. Eles terão o caminho cats/:username/:id.
p>Tal como sempre, é possível utilizar caminhos diferentes no módulo routeExample, mas a única coisa que precisa de especificar é o ponto de partida em app.use.
Para executar o código, digite node main numa janela terminal e utilize cURL noutra janela em conformidade.
Diferentes rotas em express.Router com middleware
Neste exemplo, iremos navegar para a página inicial da nossa loja de animais de estimação e definir uma função middleware, timeLog, que irá emitir o tempo em que o respectivo caminho foi solicitado.
birds.js:
In main.js:
var birds = require('./birds')
app.use('/birds', birds) //handle /birds and /birds/about
Utiliza o comando node para executar o código, depois utiliza cURL assim:


Thus, é possível em express.Router executar apenas funções de middleware em caminhos específicos.