Non sono molto bravo con le espressioni regolari, quindi voglio assicurarmi di farlo correttamente. Diciamo che ho due percorsi molto simili, /discussion/:slug/
e /page/:slug/
. Voglio creare un percorso che corrisponda a entrambe queste pagine.
app.get("/[discussion|page]/:slug", function(req, res, next) {
...enter code here...
})
È questo il modo corretto di farlo? In questo momento sto solo creando due percorsi separati.
someFunction = function(req, res, next) {..}
app.get("/discussion/:slug", someFunction)
app.get("/page/:slug", someFunction)
risposte:
99 per risposta № 1app.get("/:type(discussion|page)/:id", ...)
lavori
54 per risposta № 2
Dovresti usare un oggetto letterale di espressione regolare javascript, non una stringa, e @sarnold ha ragione a dire che vuoi alternare le parentesi. Le parentesi quadre sono per le classi di caratteri.
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);
Il (.+)
significa che deve essere presente una lumaca di almeno 1 carattere o che questa rotta non corrisponderà. Uso (.*)
se vuoi che corrisponda anche a una lumaca vuota.