it-swarm.com.de

NodeJS/Express: Was ist "app.use"?

In den docs des Moduls NodeJS express hat der Beispielcode app.use(...)

Was ist die use-Funktion und wo ist sie definiert?

247
Alexander Bird

Das App-Objekt wird beim Erstellen des Express-Servers instanziiert. Es hat einen Middleware Stack , der in app.configure() angepasst werden kann (dies ist jetzt veraltet) in Version 4.x) .

Um Ihre Middleware einzurichten, können Sie app.use(<specific_middleware_layer_here>) für jede Middleware-Schicht aufrufen, die Sie hinzufügen möchten (sie kann für alle Pfade generisch sein oder nur für bestimmte Pfade, die Ihr Server verarbeitet, ausgelöst werden) wird Ihrem Express Middleware-Stack hinzugefügt. Middleware-Ebenen können einzeln in mehreren Aufrufen von use oder sogar alle gleichzeitig in Serie mit einem Aufruf hinzugefügt werden. Siehe use Dokumentation für weitere Details.

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 app.use(express.bodyParser()), app.use(express.cookieParser()) usw. genannt, wodurch diese Express-Middleware-Ebenen zum Middleware-Stack hinzugefügt wurden. Beachten Sie, dass die Routen leer sind, was bedeutet, dass ich beim Hinzufügen dieser Middleware-Ebenen angegeben habe, dass sie auf jeder Route ausgelöst werden. Wenn ich eine benutzerdefinierte Middleware-Ebene hinzufüge, die nur auf dem Pfad /user/:id ausgelöst wird, wird dies im Feld route dieses Middleware-Ebenenobjekts im Stapelausdruck oben als Zeichenfolge angezeigt.

Jede Ebene fügt im Wesentlichen eine Funktion hinzu, die speziell Ihren Fluss durch die Middleware regelt.

Z.B. Durch Hinzufügen von bodyParser stellen Sie sicher, dass Ihr Server eingehende Anforderungen über die Express-Middleware verarbeitet. Das Parsen des Hauptteils eingehender Anforderungen ist Teil der Prozedur, die Ihre Middleware bei der Verarbeitung eingehender Anforderungen durchführt - alles, weil Sie app.use(bodyParser) aufgerufen haben.

311
chinnychinchin

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 , auf dem Express basiert, definiert.

38
JohnnyHK

Jede Anwendung (Middleware) wird jedes Mal aufgerufen, wenn eine Anfrage an den Server gesendet wird. 

19
Tyrese

app.use () wird zum Mounten der Middleware-Funktion oder zum Mounten an einen angegebenen Pfad verwendet. Die Middleware-Funktion wird ausgeführt, wenn der Basispfad übereinstimmt.

Zum Beispiel: Wenn Sie app.use () in indexRouter.js verwenden, wie folgt:

//indexRouter.js

var adsRouter = require('./adsRouter.js');

module.exports = function(app) {
    app.use('/ads', adsRouter);
}

Im obigen Code hängen app.use () den Pfad für '/ ads' an adsRouter.js an.

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 ist der Pfad für ads- '/ ads/show' so und wird dann gemäß controllerIndex.ads.showAd () funktionieren.

app.use ([Pfad], Rückruf, [Rückruf]): Wir können einen Rückruf desselben hinzufügen.

app.use('/test', function(req, res, next) {

  // write your callback code here.

    });
14
Shubham Verma

app.use () fungiert in Express-Apps als Middleware. Im Gegensatz zu app.get () und app.post () oder so 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 aufgerufen wurde.

5
Omkar Mote

app.use () funktioniert so:

  1. Anforderungsereignis wurde auf der Knoten-Server-Instanz des Knotens ausgelöst.
  2. express führt einen Teil seiner inneren Manipulation mit req object aus.
  3. Dies ist der Zeitpunkt, zu demexpress die Dinge ausführt, die Sie mit app.use angegeben haben

was sehr einfach ist.

Und nur dann wird der Rest den Rest erledigen wie Routing.

4
Anton Stafeyev

Middleware ist ein allgemeiner Begriff für Software, die dazu dient, "zusammenzukleben". Daher ist App.use eine Methode zum Konfigurieren der Middleware, zum Beispiel: um den Hauptteil der Anforderung zu analysieren und zu bearbeiten: app.use (bodyParser.urlencoded ({extended: 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/de/guide/ using-middleware.html

1
user3432221

app.use ist Woks als Middleware für App-Anfrage . 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);
1
chetan awate

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.

mit können Sie alle Anforderungen überprüfen. Wenn Sie beispielsweise das Token/Zugriffstoken überprüfen möchten, müssen Sie eine Middleware mit app.use schreiben, um das Token in der Anforderung zu überprüfen.

Dieses Beispiel zeigt eine Middleware-Funktion ohne Bereitstellungspfad. 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()
})

verweis von https://expressjs.com/en/guide/using-middleware.html

1
Osama Bari

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 zur Verwendung in einem Express-Projekt 

1
saurabh kumar

app.use wendet die angegebene Middleware auf den Middleware-Stack der Hauptanwendung an. Beim Anhängen von Middleware an den Haupt-App-Stack ist die Reihenfolge der Anhänge von Bedeutung. Wenn Sie die Middleware A vor der Middleware B anschließen, wird die 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()
})
1
Rubin bhandari
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 (oder mehrere Middlewares) zu registrieren, bevor eine Endroutenlogik oder eine Zwischenroutenlogik in Abhängigkeit von der Reihenfolge der Middlewareregistrierung ausgeführt wird.

Middleware: bildet eine Kette von Funktionen/Middleware-Funktionen mit 3 Parametern req, res und next . next ist ein Callback, der sich auf die nächste Middleware-Funktion in der Kette und im Falle der letzten Middleware-Funktion der Kette next auf die erste Middleware-Funktion der nächsten registrierten Middleware-Kette bezieht.

app.use() ist eine Middleware-Methode.

Die Middleware-Methode ähnelt einem Interceptor in Java. Diese Methode wird immer für alle Anforderungen ausgeführt.

Zweck und Verwendung von Middleware: -

  1. Um zu überprüfen, ob die Sitzung abgelaufen ist oder nicht
  2. zur Benutzerauthentifizierung und -autorisierung
  3. auf Cookies prüfen (Ablaufdatum)
  4. analysieren Sie die Daten vor der Antwort
0
Mohan

Kurz gesagt, app.use () unterstützt alle Arten von Anforderungen [z

beispiel:

app.use("/test",functionName)

und Funktionsname befindet sich in einer anderen Datei

0
Snivio

Binden Sie die Middleware auf Anwendungsebene an eine Instanz des App-Objekts, indem Sie die Funktionen app.use () und app.METHOD () verwenden, wobei METHOD die HTTP-Methode der Anforderung ist, die von der Middleware-Funktion verarbeitet wird (z. B. GET, PUT oder POST) in Kleinbuchstaben.

0

Sie können jede Middleware ( read more ) wie body_parser, CORS usw. verwenden. Middleware kann request- und response-Objekte ändern. Es kann auch ein Stück Code ausgeführt werden.

Sie können auch gerne Ihre eigene Middleware-Funktion erstellen

app.use( function(req, res, next) {
  // your code 
  next();
})

Es enthält drei Parameter req, res, next 
Sie können es auch zur Authentifizierung und Validierung von Eingabeparametern verwenden, um Ihr Beizubehalten. Controller sauber.

next() wird verwendet, um zur nächsten Middleware oder Route zu gelangen. 
Sie können die Antwort von Middleware senden

0
Ashvin Ahjolia

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 Pfad /user/:id installierte Middleware-Funktion. Diese Funktion wird für jede Art von HTTP-Anforderung im Pfad /user/:id ausgeführt.

Es ähnelt dem Web-Server REST. Verwenden Sie einfach einen anderen /xx, um verschiedene Aktionen darzustellen.

0
Hongnan Yan