/ / Regex dla dopasowania trasy w Express - regex, node.js, express

Regex dla dopasowania trasy w Express - regex, node.js, express

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 1

app.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.