Chaînage de plusieurs middleware pour un itinéraire spécifique dans ExpressJS

Je souhaite simplement vérifier quelque chose, mais je n’ai rien trouvé à ce sujet dans la documentation Express ou en ligne (bien que je sache que c’est une fonctionnalité).

Je pourrais simplement tester cela, mais je n’ai pas vraiment de modèle et j’aimerais avoir des nouvelles de la communauté.

Si je définis un itinéraire en express comme tel:

app.get('/', function (req, res) { res.send('GET request to homepage'); }); 

Je peux également définir un middleware et le charger directement, tel que

 middleware = function(req, res){ res.send('GET request to homepage'); }); app.get('/', middleware) 

Cependant, je peux également chaîner au moins l’une de ces routes pour exécuter un middleware supplémentaire, tel que l’authentification, en tant que tel:

 app.get('/', middleware, function (req, res) { res.send('GET request to homepage'); }); 

Sont-ils infiniment chaînables? Est-ce que je pourrais coller 10 fonctions middleware sur un itinéraire donné si je le voulais? Je veux voir les parameters qu’app.get peut accepter mais, comme mentionné, je ne le trouve pas dans la documentation.

Cela ne dit pas “infiniment”, mais cela signifie que vous pouvez append plusieurs fonctions de middleware (appelées “callbacks” dans la documentation) ici :

router.METHOD (chemin, [rappel, …])

Vous pouvez fournir plusieurs rappels , et tous sont traités de manière égale et se comportent exactement comme des middlewares, sauf qu’ils peuvent appeler next (‘route’) pour contourner le ou les rappels d’itinéraire restants. Vous pouvez utiliser ce mécanisme pour exécuter des conditions préalables sur une route, puis passer le contrôle aux routes suivantes lorsqu’il n’y a aucune raison de poursuivre avec la route correspondante.

Comme vous pouvez le constater, il n’ya pas de distinction entre une fonction middleware et la fonction qui gère généralement la requête (celle qui est généralement la dernière fonction ajoutée à la liste).

Avoir 10 ne devrait pas être un problème (si vous en avez vraiment besoin).

Considérons l’exemple suivant:

 var middleware = { requireAuthentication: function(req, res, next) { console.log('private route list!'); next(); }, logger: function(req, res, next) { console.log('Original request hit : '+req.originalUrl); next(); } } 

Maintenant, vous pouvez append plusieurs middleware en utilisant le code suivant:

 app.get('/', [middleware.requireAuthentication, middleware.logger], function(req, res) { res.send('Hello!'); }); 

Ainsi, à partir du morceau de code ci-dessus, vous pouvez voir que “requireAuthentication” et “logger” sont deux middlewares différents ajoutés.