Routage dans Express.js

Routage modulaire

Imaginez ce scénario : Vous possédez un magasin qui vend des animaux de compagnie, et un client veut vous acheter des lapins et des chats.

Si vous utilisez les méthodes de routage de base définies ci-dessus, le code ressemblera à ceci :

Vous remarquerez que nous avons écrit les mêmes routes plusieurs fois.

Cependant, écrire les routes encore et encore augmente la redondance et les coquilles. En outre, il est utile de rendre notre code plus modulaire, car c’est une bonne pratique.

En tant que programmeur, vous voulez toujours rendre votre code plus propre. Pour rendre le code ci-dessus plus facile à lire, nous pouvons utiliser deux méthodes.

Utiliser app.route

C’est ici que app.route entre en jeu. Vous écrirez le chemin une fois, et vous pouvez enchaîner plusieurs gestionnaires de route.

Vous pouvez mettre en œuvre app.route comme suit :

app.route(PATH)
.get(callback)
.post(callback)
//can add more HTTP requests (.put, .delete, etc)

Nous pouvons maintenant réécrire le code :

Le code a l’air plus propre, et vous n’avez dû saisir qu’une seule fois la route pour chaque requête HTTP.

Cependant, il y a une autre mise en garde : le paramètre username existe dans toutes les routes. Taper username encore et encore encourage les fautes de frappe et les redondances. Et si nous pouvions le rendre encore plus modulaire ?

express.Router()

Nous pouvons utiliser express.Router() pour créer des gestionnaires de route modulaires et montables. Une Router instance est un intergiciel et un système de routage complet, c’est pourquoi on la qualifie souvent de  » mini-app « .

Nous devons seulement spécifier le point de départ, et la Router instance s’occupera du reste pour nous.

Pour utiliser app.Router(), nous devons créer un module séparé, instancier une instance de app.Router, puis utiliser module.exports pour exporter l’instance.

Pour plus de détails sur l’utilisation de module.exports, consultez mon article précédent.

Dans cet exemple, nous allons juste gérer un simple chemin qui contiendrait les paramètres username et id.

Dans routerExample.js:

Nous utilisons router.route(), qui est similaire à app.route. Le module défini dit :  » Tant que le chemin se terminera par /:username/:id, exécutez le code suivant tel que défini. »

Pour l’utiliser, utilisez un autre module, main.js :

Comme le disent les commentaires, on utilise app.use pour dire à routeExample.js d’exécuter les fonctions qui ont des routes commençant par le premier paramètre. Le premier paramètre peut être qualifié de point de départ. Par conséquent, le chemin sera starting point + PATH defined by router.

Par exemple, selon la ligne 6, nous allons maintenant traiter les requêtes GET et POST qui commencent par ‘/cats’. Elles auront le chemin cats/:username/:id.

Comme toujours, vous pouvez utiliser différentes routes dans le module routeExample, mais la seule chose que vous devez spécifier est le point de départ dans app.use.

Pour exécuter le code, tapez node main dans une fenêtre de terminal et utilisez cURL dans une autre fenêtre en conséquence.

Différents chemins dans express.Router avec middleware

Dans cet exemple, nous allons naviguer vers la page d’accueil Birds de notre animalerie et définir une fonction middleware, timeLog, qui sortira l’heure à laquelle le chemin respectif a été demandé.

birds.js:

En main.js :

var birds = require('./birds')
app.use('/birds', birds) //handle /birds and /birds/about

Utiliser la commande node pour exécuter le code, puis utiliser cURL comme suit :

Sortie de la fenêtre côté client-.côté client

Sortie de la fenêtre côté serveur-side window

Ainsi , il est possible dans express.Router de n’exécuter les fonctions de l’intergiciel que dans des chemins spécifiques.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *