Mehrere optionale Parameter der route in Express?
Ich bin mit Express zu behandeln, eine route, die im format /articles/:year/:month/:day
, in denen Jahr, Monat und Tag sind optionale.
- Wenn keiner der drei Parameter angegeben ist, werden alle Artikel zurückgegeben werden;
- Wenn year gegeben ist, die Artikel von diesem Jahr zurückgegeben werden;
- Wenn Jahr und Monat angegeben sind, Artikel, die Jahr und Monat zurückgegeben werden;
- Wenn alle drei Parameter gegeben sind, Artikel, die Jahr, Monat und Tag zurückgegeben werden.
Meine Frage ist, wie kann ich optional machen? Mit der aktuellen route, die ich definiert habe, es sei denn, alle drei Parameter vorhanden sind, wird es nicht aufgelöst werden können und gehören in die default-route.
- Sie können mehrere Routen definieren, für den Fall, wenn ein Jahr vorhanden ist, das Jahr und die Monate sind vorhanden, alle Parameter vorhanden sind und keine vorhanden sind , oder Sie verschieben die Parameter für die Abfrage-Zeichenfolge
- Sie können auch optional machen, indem Sie ein
?
nach Ihnen - Danke für Eure Ratschläge. Sie sind wirklich hilfsbereit und Sie passen gut in mein use-case. Ich habe letztendlich die Lösung entschieden, die aus hjpotter92 obwohl, wie es auch ruhig elegant und Ergebnis in kürzerer code. Danke nochmal für Eure Hilfe sowieso.
- Vielen Dank für Ihre Beratung! Kann nicht glauben, ich habe übersehen, wie wichtig info, wenn ich den guide durchlesen. Ich ' ll definitiv gehen wieder RTFM. Wollen Sie formal setzen Sie Ihre Antwort unter? Ich werde es akzeptieren, wenn so.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den expressjs s guide routing erwähnt:
Grundsätzlich kann man die
?
Zeichen, dass der parameter optional.Bearbeitet, die für den eigenen Zweck mit den 3 verschiedenen Optionen in einer Antwort. Kredit @hjpotter92 für seine regex Antwort.
Mit URL-Params
Mit regex
Ohne regex
Definieren Sie die 3 Pfade, die Sie unterstützen möchten, und die Wiederverwendung der gleichen Funktion
Mit Query Params
Die url für diesen Endpunkt sieht folgendermaßen aus:
Diese Art der route ist wahrscheinlich nicht funktioniert, weil die Unterstriche in den übergebenen Parametern.
So, ich schlage vor, Sie verwenden die folgende route-system, wenn die Strecke nicht funktioniert. Dort werden Sie in der Lage zu senden mehrerer Parameter.