In den Dokumenten für das NodeJS- express
Modul enthält der Beispielcodeapp.use(...)
.
Was ist die use
Funktion und wo ist sie definiert?
In den Dokumenten für das NodeJS- express
Modul enthält der Beispielcodeapp.use(...)
.
Was ist die use
Funktion und wo ist sie definiert?
Antworten:
Das App-Objekt wird beim Erstellen des Express-Servers instanziiert. Es verfügt über einen Middleware- Stack , der angepasst werden kann app.configure()
(dieser ist in Version 4.x veraltet). .
Um Ihre Middleware einzurichten, können Sie app.use(<specific_middleware_layer_here>)
für jede Middleware-Schicht, die Sie hinzufügen möchten, aufrufen (sie kann für alle Pfade generisch sein oder nur für bestimmte Pfade ausgelöst werden, die Ihr Server verarbeitet), und sie wird Ihrem Express- Middleware-Stack hinzugefügt . Middleware-Ebenen können einzeln in mehreren Aufrufen use
oder sogar alle gleichzeitig in Reihe mit einem Aufruf hinzugefügt werden . Weitere Informationen finden Sie in der use
Dokumentation .
Um ein Beispiel für das konzeptionelle Verständnis von Express Middleware zu geben, sieht mein App Middleware Stack (app.stack) folgendermaßen aus, wenn mein App-Objekt als JSON in der Konsole protokolliert wird:
stack:
[ { route: '', handle: [Function] },
{ route: '', handle: [Function: static] },
{ route: '', handle: [Function: bodyParser] },
{ route: '', handle: [Function: cookieParser] },
{ route: '', handle: [Function: session] },
{ route: '', handle: [Function: methodOverride] },
{ route: '', handle: [Function] },
{ route: '', handle: [Function] } ]
Wie Sie vielleicht ableiten können, habe ich usw. angerufen app.use(express.bodyParser())
und app.use(express.cookieParser())
diese Express-Middleware-Ebenen zum Middleware-Stack hinzugefügt. Beachten Sie, dass die Routen leer sind. Dies bedeutet, dass ich beim Hinzufügen dieser Middleware-Ebenen angegeben habe, dass sie auf jeder Route ausgelöst werden. Wenn ich eine benutzerdefinierte Middleware-Schicht hinzugefügt hätte, die nur auf dem Pfad ausgelöst wurde, der /user/:id
als Zeichenfolge im route
Feld dieses Middleware-Schicht-Objekts im obigen Stapelausdruck angezeigt würde.
Jede Ebene fügt im Wesentlichen eine Funktion hinzu, die speziell Ihren Flow durch die Middleware behandelt.
ZB durch Hinzufügen bodyParser
, sind Sie Ihren Server eingehende Anfragen durch die ausdrückliche Middleware gewährleistet . Das Parsen der eingehenden Anforderungen ist nun Teil des Verfahrens, das Ihre Middleware bei der Verarbeitung eingehender Anforderungen ausführt - alles nur, weil Sie angerufen haben app.use(bodyParser)
.
next()
Rückruf, den jede Middleware aufrufen soll, um die Verarbeitung an die nächste Funktion in der Pipeline weiterzuleiten. Das Routing-System (das erste Argument dafür app.use()
) ermöglicht es der Pipeline, abhängig von der URL zu verzweigen
use
ist eine Methode zum Konfigurieren der Middleware, die von den Routen des Express-HTTP-Serverobjekts verwendet wird. Die Methode ist als Teil von Connect definiert , auf dem Express basiert.
Update Ab Version 4.x ist Express nicht mehr von Connect abhängig .
Die Middleware-Funktionen, die zuvor in Express enthalten waren, befinden sich jetzt in separaten Modulen. Siehe die Liste der Middleware-Funktionen .
app.use(function(){ var object = new SomeConstructor; next(); })
Jede app.use (Middleware) wird jedes Mal aufgerufen, wenn eine Anfrage an den Server gesendet wird.
app.use () dient zum Mounten der Middleware-Funktion oder zum Mounten an einem angegebenen Pfad. Die Middleware-Funktion wird ausgeführt, wenn der Basispfad übereinstimmt.
Beispiel: Wenn Sie app.use () in indexRouter.js verwenden, gehen Sie wie folgt vor:
//indexRouter.js
var adsRouter = require('./adsRouter.js');
module.exports = function(app) {
app.use('/ads', adsRouter);
}
Mounten Sie im obigen Code app.use () den Pfad auf '/ ads' zu adsRouter.js.
Jetzt in adsRouter.js
// adsRouter.js
var router = require('express').Router();
var controllerIndex = require('../controller/index');
router.post('/show', controllerIndex.ads.showAd);
module.exports = router;
In adsRouter.js lautet der Pfad für ads- '/ ads / show' wie folgt und funktioniert dann gemäß controllerIndex.ads.showAd ().
app.use ([Pfad], Rückruf, [Rückruf]): Wir können einen Rückruf hinzufügen.
app.use('/test', function(req, res, next) {
// write your callback code here.
});
app.use () fungiert als Middleware in Express-Apps. Im Gegensatz zu app.get () und app.post () können Sie app.use () tatsächlich verwenden, ohne die Anforderungs-URL anzugeben. In einem solchen Fall wird es jedes Mal ausgeführt, unabhängig davon, welche URL getroffen wurde.
app.use () funktioniert so:
was sehr einfach.
Und nur dann erledigt Express den Rest der Dinge wie Routing.
app.use(function middleware1(req, res, next){
// middleware1 logic
}, function middleware1(req, res, next){
// middleware2 logic
}, ... middlewareN);
app.use ist eine Möglichkeit, Middleware oder eine Kette von Middlewares zu registrieren (oder mehrere Middlewares) oder eine Zwischenroutenlogik ausgeführt wird, abhängig von der Reihenfolge der Middleware-Registrierungssequenz.
Middleware: Formen Kette von Funktionen / Middleware-Funktionen mit 3 Parametern req, res, und weiter zum nächsten . Als nächstes folgt der Rückruf, der sich auf die nächste Middleware-Funktion in der Kette bezieht, und im Fall der letzten Middleware-Funktion der Kette zeigt next auf die erste Middleware-Funktion der nächsten registrierten Middlerare-Kette.
In Express, wenn wir Express aus "Express" importieren und app = express () verwenden; dann App mit allen Funktionen von Express
wenn wir app.use () verwenden
mit jeder Modul- / Middleware-Funktion, die im gesamten Express-Projekt verwendet werden kann
app.use
ist eine Funktion, die Middleware erfordert. Zum Beispiel:
app.use('/user/:id', function (req, res, next) {
console.log('Request Type:', req.method);
next();
});
Dieses Beispiel zeigt die im /user/:id
Pfad installierte Middleware-Funktion . Diese Funktion wird für jede Art von HTTP-Anforderung in der ausgeführt/user/:id
Pfad ausgeführt.
Es ähnelt dem REST-Webserver. Verwenden Sie einfach different /xx
, um verschiedene Aktionen darzustellen.
use
tun kann. Ich musste nur wissen, dass es das war (und jedes Kontextwissen, um zu wissen, wie ich selbst mehr forschen kann).
app.use ist Woks als Middleware für App-Anfragen. Syntax
app.use('pass request format',function which contain request response onject)
Beispiel
app.use('/',funtion(req,res){
console.log(all request pass through it);
// here u can check your authentication and other activities.
})
Sie können es auch verwenden, wenn Sie Ihre Anfrage weiterleiten.
app.use('/', roting_object);
Middleware ist ein allgemeiner Begriff für Software, die zum "Zusammenkleben" dient. App.use ist also eine Methode zum Konfigurieren der Middleware, zum Beispiel: Analysieren und Behandeln des Anforderungshauptteils: app.use (bodyParser.urlencoded ({erweitert: true) })); app.use (bodyParser.json ()); Es gibt viele Middlewares, die Sie in Ihrer Express-Anwendung verwenden können. Lesen Sie einfach das Dokument: http://expressjs.com/en/guide/using-middleware.html
app.use wendet die angegebene Middleware auf den Haupt-App-Middleware-Stack an. Beim Anhängen von Middleware an den Haupt-App-Stack spielt die Reihenfolge der Anhänge eine Rolle. Wenn Sie Middleware A vor Middleware B anhängen, wird Middleware A immer zuerst ausgeführt. Sie können einen Pfad angeben, für den eine bestimmte Middleware gilt. Im folgenden Beispiel wird "Hallo Welt" immer vor "Frohe Feiertage" protokolliert.
const express = require('express')
const app = express()
app.use(function(req, res, next) {
console.log('hello world')
next()
})
app.use(function(req, res, next) {
console.log('happy holidays')
next()
})
Es ermöglicht Ihnen , jede Middleware verwenden ( lesen Sie mehr ) wie body_parser
, CORS
usw. Middleware können folgende Änderungen vornehmen request
und response
Objekte. Es kann auch einen Code ausführen.
Sie können auch Ihre eigene Middleware-Funktion wie erstellen
app.use( function(req, res, next) {
// your code
next();
})
Es enthält drei Parameter req
, res
,next
können Sie es auch für die Authentifizierung verwenden und Validierung von Eingabe params Ihren Controller sauber zu halten.
next()
wird verwendet, um zur nächsten Middleware oder Route zu gelangen.
Sie können die Antwort von der Middleware senden
Binden Sie Middleware auf Anwendungsebene mithilfe der Funktionen app.use () und app.METHOD () an eine Instanz des App-Objekts, wobei METHOD die HTTP-Methode der Anforderung ist, die von der Middleware-Funktion verarbeitet wird (z. B. GET, PUT oder POST) in Kleinbuchstaben.
Kurz gesagt, app.use () unterstützt alle Arten von Anforderungen [z. B. get, post, ...] und wird daher hauptsächlich zum Einrichten von Middware verwendet. oder kann verwendet werden, wenn die Routen und Funktionen getrennt sind
Beispiel:
app.use("/test",functionName)
und functionName befindet sich in einer anderen Datei
app.use()
ist eine Middleware-Methode.
Die Middleware-Methode ist wie ein Interceptor in Java. Diese Methode wird immer für alle Anforderungen ausgeführt.
Zweck und Verwendung von Middleware: -
app.use
wird von express (nodejs Middleware Framework) erstellt.
app.use wird verwendet, um eine bestimmte Abfrage im Intilisierungsprozess auszuführen.
server.js (Knoten)
var app = require ('express');
Daher wird die Funktion app.use jedes Mal aufgerufen, wenn der Server hochgefahren ist
app.use(bodyparser.json())
app.use ist Middleware auf Anwendungsebene
Binden Sie Middleware auf Anwendungsebene mithilfe der Funktionen app.use () und app.METHOD () an eine Instanz des App-Objekts, wobei METHOD die HTTP-Methode der Anforderung ist, die von der Middleware-Funktion verarbeitet wird (z. B. GET, PUT oder POST) in Kleinbuchstaben.
Sie können alle Anforderungen überprüfen. Sie möchten beispielsweise das Token / Zugriffstoken überprüfen, das Sie zum Schreiben einer Middleware benötigen, indem Sie app.use verwenden, um das Token in der Anforderung zu überprüfen.
Dieses Beispiel zeigt eine Middleware-Funktion ohne Mount-Pfad. Die Funktion wird jedes Mal ausgeführt, wenn die App eine Anfrage erhält.
var app = express()
app.use(function (req, res, next) {
console.log('Time:', Date.now())
next()
})
Referenz von https://expressjs.com/en/guide/using-middleware.html