Ich habe gerade die Dokumentation auf Express gelesen und diese beiden Begriffe gefunden, app.use();
undrouter.use();
Ich weiß, dass app.use();
es in Node zum Mounten einer Middleware an einem Pfad verwendet wird, und wir verwenden es häufig in den meisten Node-Apps. aber was ist, router.use();
sind sie beide gleich? Wenn nicht, was ist der Unterschied?
Ich las über Router hier . Ich habe auch ähnliche Fragen zu SO gefunden. Was ist der Unterschied zwischen "express.Router" und Routing mit "app.get"? und Unterschied zwischen app.all ('*') und app.use ('/') , aber sie beantworten meine Frage nicht wirklich. Vielen Dank.
router
. Wir können nur durch tunapp
. Ist das korrekt?router.use
aber diese Antwort bezieht sich aufrouter.get
?router.use();
Mounten Middleware für die Routen, die vom jeweiligen Router bedient werden,app.use();
Mounten Middleware für alle Routen der App (oder diejenigen, die den angegebenen Routen entsprechen, wenn Sie sie verwendenapp.use('/ANYROUTESHERE', yourMiddleware());
).Ein Anwendungsbeispiel könnte eine App mit einem Router mit Standardrouten und einem Router sein, der API-Routen verarbeitet, für die ein gültiger Benutzer erforderlich ist.
Sie würden dann die Authentifizierungs-Middleware für den API-Router nur mit mounten
router.use(yourAuthMiddleware());
.Wenn Sie jedoch eine App haben möchten, für die ein gültiger Benutzer für alle Routen erforderlich ist, stellen Sie die Middleware für die App mit bereit
app.use(yourAuthMiddleware());
quelle
use
in einem anderen Router? Gefälltrouter1.use('/path', router2);
app.use (), mit dem die Middleware-Funktion oder -Funktionen am angegebenen Pfad bereitgestellt werden. Die Middleware-Funktion wird ausgeführt, wenn die Basis des angeforderten Pfads mit dem Pfad übereinstimmt.
router.use () wird für Middleware-Funktionen oder -Funktionen verwendet. Der Standard-Mount-Pfad lautet "/".
In app.use () müssen Sie jedoch einen bestimmten Pfad wie folgt angeben:
var adsRouter = require('./adsRouter.js'); app.use('/ads', adsRouter);
oder
app.use('/ads', function(req, res, next) { // write your callback code here. });
Bei Verwendung von router.use () können Sie jedoch nur Middleware wie folgt angeben:
router.use(function(req, res, next) { console.log('%s %s %s', req.method, req.url, req.path); next(); });
oder
router.use('/test', function(req, res, next) { // write your callback code here. next(); });
oder
//in router.js router.use('/admin', authUtil.verifySessionId, authUtil.verifyLisencee); router.post('/admin', controllerIndex.ads.adListingAdmin);
Wenn der Endpunkt im obigen Code '/ admin' ist, ruft er zuerst authUtil.verifySessionId und authUtil.verifyLisencee auf und führt dann die nächste Zeile mit dem Endpunkt 'admin' und gemäß der Methode controllerIndex.ads.adListingAdmin aus.
quelle
app.use
Sie die Funktion für jede an die App gesendete Anforderung ausführen möchten.