Je lisais juste la documentation sur express et j'ai trouvé ces deux termes, app.use();
etrouter.use();
Je sais qu'il app.use();
est utilisé dans le nœud pour monter un middleware sur un chemin, et nous l'utilisons souvent dans la plupart des applications de nœud. mais qu'est-ce router.use();
qu'ils sont tous les deux identiques? sinon, quelle est la différence?
J'ai lu sur le routeur ici . J'ai également trouvé des questions similaires sur SO Quelle est la différence entre "express.Router" et le routage en utilisant "app.get"? et Différence entre app.all ('*') et app.use ('/') , mais ils ne répondent pas vraiment à ma question. Merci.
router
. Nous ne pouvons faire que parapp
. Est-ce exact?router.use
mais cette réponse répond en faisant référencerouter.get
?router.use();
monte le middleware pour les routes desservies par le routeur spécifique,app.use();
monte le middleware pour toutes les routes de l'application (ou celles correspondant aux routes spécifiées si vous utilisezapp.use('/ANYROUTESHERE', yourMiddleware());
).Un exemple de cas d'utilisation pourrait être une application avec un routeur avec des routes standard et un routeur qui gère les routes API, qui nécessitent un utilisateur valide.
Vous monterez alors le middleware d'authentification pour le routeur API uniquement avec
router.use(yourAuthMiddleware());
.Si vous avez une application qui nécessite un utilisateur valide pour toutes les routes, montez le middleware pour l'application avec
app.use(yourAuthMiddleware());
la source
use
dans un autre routeur? J'aimerouter1.use('/path', router2);
app.use () utilisé pour monter la ou les fonctions middleware sur le chemin spécifié, la fonction middleware est exécutée lorsque la base du chemin demandé correspond au chemin.
router.use () est utilisé pour la fonction ou les fonctions du middleware, le chemin de montage par défaut sur «/».
Mais dans app.use (), vous devrez donner un chemin spécifié comme celui-ci:
var adsRouter = require('./adsRouter.js'); app.use('/ads', adsRouter);
ou
app.use('/ads', function(req, res, next) { // write your callback code here. });
Mais en utilisant router.use (), vous ne pouvez donner qu'un middleware, comme ceci:
router.use(function(req, res, next) { console.log('%s %s %s', req.method, req.url, req.path); next(); });
ou
router.use('/test', function(req, res, next) { // write your callback code here. next(); });
ou
//in router.js router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee); router.post('/admin', controllerIndex.ads.adListingAdmin);
Dans le code ci-dessus, lorsque le point final est '/ admin', il appellera d'abord authUtil.verifySessionId et authUtil.verifyLisencee, puis il exécutera la ligne suivante avec le point final 'admin' et selon la méthode controllerIndex.ads.adListingAdmin.
la source
app.use
si vous souhaitez exécuter la fonction pour chaque demande adressée à l'application.