Nie jestem zbyt dobry w wyrażeniach regularnych, więc chcę się upewnić, że robię to poprawnie. Powiedzmy, że mam dwie bardzo podobne trasy, /discussion/:slug/
i /page/:slug/
. Chcę utworzyć trasę, która pasuje do obu tych stron.
app.get("/[discussion|page]/:slug", function(req, res, next) {
...enter code here...
})
Czy to właściwy sposób na zrobienie tego? W tej chwili tworzę tylko dwie osobne trasy.
someFunction = function(req, res, next) {..}
app.get("/discussion/:slug", someFunction)
app.get("/page/:slug", someFunction)
Odpowiedzi:
99 dla odpowiedzi nr 1app.get("/:type(discussion|page)/:id", ...)
Prace
54 dla odpowiedzi nr 2
Powinieneś użyć dosłownego obiektu wyrażenia regularnego javascript, a nie ciągu, a @sarnold ma rację, że chcesz wstawiać zmienne. Nawiasy kwadratowe dotyczą klas postaci.
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 (.+)
oznacza, że ślimak musi mieć co najmniej 1 znak, w przeciwnym razie ta droga nie będzie pasować. Posługiwać się (.*)
jeśli chcesz, aby pasował również do pustej ślimaka.