Node.js Express-middleware-Funktion, ohne weiter

Im Express-middleware, es sollte dabei 3 Parameter: Anfrage, Antwort, nächste.
Jedoch in der 2. middleware in den code, wo ich aus einem Buch abgeschrieben, aber nur request -, response. Was ist der Grund hier? und die nächste ist optional?

var express = require("express");
var http = require("http");

var app = express();

app.use(function(request, response, next) {
    console.log("In comes a " + request.method + " to " + request.url);
    next();
});

app.use(function(request, response) {
    response.writeHead(200, { "Content-Type": "text/plain" });
    response.end("Hello, world!");
});

http.createServer(app).listen(3000);
InformationsquelleAutor user1187968 | 2017-02-23



2 Replies
  1. 5

    Mit express.js es gibt 4 Arten von basic-Handler.

    • 2 – req, res
    • 3 – req, res, next
    • 4 – err, req, res, next

    Wenn Sie 2 Argumente, express immer zuweisen req und res, um Sie, egal was Sie Sie nennen. Es ist nur ein Aufruf-Konvention, die weit verbreitet ist und durch die express-Gemeinschaft, die sich für sauberer, lesbarer und verständlicher code.

  2. 13

    next() wird aufgerufen, wenn Sie möchten, dass die routing für diese Anfrage weiter an die nächste middleware oder die nächste route-handler für diese Anfrage. Es ist üblich, mehr als eine middleware, die vielleicht zu prüfen, eine Anforderung also, wenn Sie nicht senden Sie eine Antwort und möchte, dass normale routing weiterhin für diese Anfrage, dann rufen Sie next() wenn Sie fertig waren mit Ihrer Verarbeitung, und Sie möchten, routing, um fortzufahren.

    Wenn Sie haben bereits eine Antwort, und so nicht wollen, routing, um fortzufahren, dann müssen Sie nicht nennen next().

    Ist es an Ihnen, ob Sie deklarieren den parameter next oder nicht. Wenn Sie nie wollen, es zu nennen, dann brauchen Sie nicht zu deklarieren, die als parameter (es ist immer noch übergeben, aber Sie nicht haben, um es erklären, wenn du nicht gehst, es zu benutzen).

    So, Sie können erklären, Ihre middleware/requeset-handler mit Parameter req und res wie diese:

    app.use("/someRoute", function(req, res) {
        res.send("hello");
    });

    Oder, mit den Parametern req, res und next wie diese:

    app.use("/someRoute", function(req, res, next) {
        if (req.query.x) {
            //don't handle this request here, let some other route
            //handler following this handle it
            next();
        } else {
            //send the response, no more route handlers after this
            res.send("hello");
        }
    });

    Macht es keinen Unterschied, zu äußern, ob Sie erklären die next argument oder nicht. Wenn Sie planen, es zu benutzen, dann erklären Sie es. Wenn Sie nicht Vorhaben, es zu benutzen, dann gibt es keinen Grund, es zu erklären, aber es ist trotzdem bestanden. Dies gilt für alle Javascript-Funktion, die Argumente. Wenn Sie nicht erklären, alle die Argumente, die als benannte Argumente, es macht es nur schwerer, einen Zugang zu Ihnen, aber Sie sind immer noch da (der Vollständigkeit halber, dann kann immer noch zugegriffen werden, durch die arguments Objekt).

    Es gibt auch einen speziellen Fall, route-handler mit vier Argumente (err, req, res, next) das ist für die Fehlerbehandlung (wenn next(err) genannt wird), aber das ist nicht das, was Ihre Frage ist. Express behandeln route-Handler mit vier Argumente unterschiedlich deklariert. Es registriert Sie als error-Handler.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.