Gibt es eine Möglichkeit, dies bei einem einzelnen Funktionsaufruf durchzuführen?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
Etwas wie:
app.get("/", "/blabla", "/blablablabla", todo );
Ich weiß, dass dies ein Syntax-Durcheinander ist, aber nur um eine Vorstellung davon zu geben, was ich erreichen möchte, wäre eine Reihe von Routen fantastisch!
Weiß jemand, wie man das macht?
Antworten:
Ich bin auf diese Frage gestoßen, als ich nach der gleichen Funktionalität gesucht habe.
@ Jonathan Ong erwähnte in einem Kommentar oben, dass die Verwendung von Arrays für Pfade veraltet ist, aber in Express 4 explizit beschrieben wird und in Express 3.x funktioniert. Hier ist ein Beispiel für etwas, das Sie ausprobieren sollten:
Aus dem Inneren des
request
Objekts mit einem Pfad von/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:Beachten Sie, was mit Parametern passiert: Es sind die Erfassungsgruppen und Parameter in allen möglichen Pfaden bekannt, unabhängig davon, ob sie in der aktuellen Anforderung verwendet werden oder nicht.
Das Stapeln mehrerer Pfade über ein Array ist also einfach, aber die Nebenwirkungen sind möglicherweise unvorhersehbar, wenn Sie hoffen, etwas Nützliches aus dem Pfad aufzunehmen, der über Parameter oder Erfassungsgruppen verwendet wurde. Es ist wahrscheinlich nützlicher für Redundanz / Aliasing. In diesem Fall funktioniert es sehr gut.
Bearbeiten: Bitte beachten Sie auch die Antwort von @ c24w unten .
Bearbeiten 2: Dies ist eine mäßig beliebte Antwort. Bitte beachten Sie, dass ExpressJS, wie bei den meisten Node.js-Bibliotheken, ein bewegliches Fest ist. Während das obige Routing noch funktioniert (ich verwende es im Moment, eine sehr praktische Funktion), kann ich nicht für die Ausgabe des Anforderungsobjekts bürgen (es unterscheidet sich sicherlich von dem, was ich beschrieben habe). Bitte testen Sie sorgfältig, um sicherzustellen, dass Sie die gewünschten Ergebnisse erhalten.
quelle
:var
setzt diereq.param
, was Sie nicht verwenden. Es wird nur in diesem Fall verwendet, um den regulären Ausdruck festzulegen.(bla|blabla)
Setzt den regulären Ausdruck so, dass er mit den Zeichenfolgenbla
und übereinstimmtblablah
.?
macht den gesamten regulären Ausdruck optional, sodass er auch übereinstimmt/
.quelle
/bla(bla)?
funktioniert auch, aber alle Parameter danach werden nicht richtig ausgefüllt (dh/bla(bla)?/:value
nicht ausgefülltreq.params.value
). Weiß jemand warum?req.params.var
aber Sie müssen sicherstellen, dass Siereq
an die Funktion übergeben habenSie können tatsächlich eine Reihe von Pfaden übergeben , genau wie Sie es erwähnt haben, und es funktioniert hervorragend:
quelle
Um auf Kevins Antwort näher einzugehen , stammt dies aus den 4.x-Dokumenten :
Sie haben einige Beispiele , darunter:
quelle
Ich ging für eine:
quelle
Benötigen Sie die Datei Ihrer ursprünglichen Route und definieren Sie die neue Route wie folgt
quelle