No soy muy bueno con las expresiones regulares, así que quiero asegurarme de que estoy haciendo esto correctamente. Digamos que tengo dos rutas muy similares, /discussion/:slug/
y /page/:slug/
. Quiero crear una ruta que coincida con estas dos páginas.
app.get("/[discussion|page]/:slug", function(req, res, next) {
...enter code here...
})
¿Es esta la forma correcta de hacerlo? Ahora mismo estoy creando dos rutas separadas.
someFunction = function(req, res, next) {..}
app.get("/discussion/:slug", someFunction)
app.get("/page/:slug", someFunction)
Respuestas
99 para la respuesta № 1app.get("/:type(discussion|page)/:id", ...)
trabajos
54 para la respuesta № 2
Debe usar un objeto de expresión regular de javascript literal, no una cadena, y @sarnold es correcto que desea parens para alternar. Los corchetes son para clases de caracteres.
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);
los (.+)
significa que debe haber una bala de al menos 1 carácter o esta ruta no coincidirá. Utilizar (.*)
si quieres que coincida con una babosa vacía también.