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:

>div>>

Saída do cliente…janela lateral

Saída do servidor-janela lateral

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *