2012-10-04 4 views
19

Ich suche nach Dokumentation über die app.get Funktion von express.js.Express app.get Dokumentation

app.get(
    '/path', 
    middleware(), 
    function(req, res) { 
     res.redirect('/'); 
    } 
); 

Das obige Beispiel benötigt drei Parameter. Die normale Dokumentation zeigt nur zwei. Ich bin daran interessiert, was dieser mittlere Param tut und wie man es benutzt.

+3

können Sie Middleware-Funktionen stapeln: app.get ('/ account', fn1, fn2, fn3, Funktion (err, req, res) {}); – chovy

+1

@chovy thx für diese einfache Antwort. Frohes neues Jahr 2015! –

Antwort

23

Die Dokumente dafür sind Teil der app.METHODdocumentation, wobei get eine der unterstützten HTTP-Methoden ist.

Der zweite, optionale Parameter heißt Middleware (und Sie können ein Array von Middleware-Funktionen übergeben). Dies ist eine Funktion, die vor dem dritten Parameter-Callback (dem eigentlichen Routen-Handler) aufgerufen wird, und die Verantwortung einer Middleware-Funktion besteht darin, dass Ihr Code dem DRY-Prinzip (sich nicht wiederholen) folgt.

Beispiel für Middleware-Funktionen sind Berechtigungsüberprüfungen, Zugriffsüberprüfungen, Validierung von Sitzungen (wenn Benutzer nicht angemeldet ist, bringen Sie ihn zu einer Anmeldeseite) und so weiter.

Da mehrere Routen das gleiche Verhalten wünschen, verwenden Sie eine Middleware, sodass Sie den gleichen Code nicht mehrmals schreiben müssen.

+0

Ich möchte einige Middleware-Funktionen machen, aber ich kann die Dokumente nicht finden, wie sie funktionieren und welche Parameter sie verwenden. Ich habe einen Beispielcode gefunden, der eine Funktion hat, die 'req, res, next' als Argumente verwendet, aber ich bin nicht sicher, wie ich sie benutzen soll. – ThomasReggi

+1

Die Middleware-Funktionen nehmen immer diese drei Parameter an: das 'request'-Objekt, das' response'-Objekt und den 'next' Callback, der aufgerufen wird, wenn die Middleware abgeschlossen ist. Übergeben Sie "next" ein Fehlerobjekt bei einem Fehler oder keine Parameter, um die Steuerung an den nächsten Rückruf zu übergeben. – JohnnyHK

+0

Kennen Sie ein Beispiel für Middleware einer anderen Methode, die Knoten/Express verwendet, um Parameter unter einem Pfad zu delegieren. Zum Beispiel route '/ login? Age = 23' von'/login? Name = thomas'? Ich könnte wirklich ein Beispiel dafür verwenden. Ich weiß, ich könnte einfach eine bedingte if 'req.query.age' und' req.query.name' verwenden, basierend darauf, ob sie 'undefiniert' sind oder nicht, aber dies wird nicht wirklich raffiniert. Ist Middleware die Lösung? – ThomasReggi