Mehrere optionale Routenparameter in Express?

7

Ich verwende Express, um eine Route im Format /articles/:year/:month/:day zu bearbeiten, wobei Jahr, Monat und Tag optional sind.

  • Wenn keiner der drei Parameter angegeben ist, werden alle Artikel zurückgegeben.
  • Wenn das Jahr angegeben ist, werden die Artikel dieses Jahres zurückgegeben.
  • Wenn Jahr und Monat angegeben sind, werden Artikel dieses Jahres und Monats zurückgegeben.
  • Wenn alle drei Parameter angegeben sind, werden Artikel dieses Jahres, Monats und Tages zurückgegeben.

Meine Frage ist, wie mache ich sie optional? Mit der aktuellen Route, die ich definiert habe, können alle drei Parameter nicht aufgelöst werden und werden in die Standardroute übernommen.

    
CLDev 19.01.2017, 07:47
quelle

2 Antworten

13

Der expressjs-Leitfaden zu den Empfehlungen für das Routing:

  

Express verwendet path-to-regexp zum Anpassen der Routenpfade. Siehe die   Pfad-zu-Regexp-Dokumentation für alle Möglichkeiten der Definition   Routenpfade Express Route Tester ist ein praktisches Tool zum Testen von Basic   Express-Routen, obwohl die Mustererkennung nicht unterstützt wird.

Grundsätzlich können Sie den Parameter ? verwenden, um den Parameter optional zu machen.

%Vor%     
hjpotter92 19.01.2017, 18:06
quelle
7

Bearbeitet für den eigenen Zweck, die 3 verschiedenen Optionen in einer Antwort zu haben. Kredit an @ hjpotter92 für seine Regex-Antwort.

Mit URL-Parametern

Mit Regex

%Vor%

Ohne Regex

%Vor%

Definieren Sie die drei Pfade, die Sie unterstützen und die gleiche Funktion wiederverwenden möchten

Mit Abfrageparametern

%Vor%

Die URL für diesen Endpunkt sieht folgendermaßen aus:

%Vor%     
R. Gulbrandsen 19.01.2017 08:16
quelle

Tags und Links