Я не дуже хороший з регулярними виразами, тому хочу переконатися, що роблю це правильно. Скажімо, я маю два дуже схожі маршрути, /discussion/:slug/
і /page/:slug/
. Я хочу створити маршрут, який відповідає обом цим сторінкам.
app.get("/[discussion|page]/:slug", function(req, res, next) {
...enter code here...
})
Це правильний спосіб зробити це? Зараз я просто створюю два окремі маршрути.
someFunction = function(req, res, next) {..}
app.get("/discussion/:slug", someFunction)
app.get("/page/:slug", someFunction)
Відповіді:
99 за відповідь № 1app.get("/:type(discussion|page)/:id", ...)
працює
54 за відповідь № 2
Ви повинні використовувати буквальний об’єкт регулярного вираження JavaScript, а не рядок, і @sarnold вірно, що ви хочете, щоб вам потрібні пароні для чергування. Квадратні дужки призначені для класів символів.
const express = require("express");
const app = express.createServer();
app.get(/^/(discussion|page)/(.+)/, function (req, res, next) {
res.write(req.params[0]); //This has "discussion" or "page"
res.write(req.params[1]); //This has the slug
res.end();
});
app.listen(9060);
The (.+)
означає, що муляж має бути принаймні 1 символом або цей маршрут не збігатиметься. Використовуйте (.*)
якщо ви хочете, щоб він також відповідав порожньому слизу.