¿Hay alguna forma de hacer esto en una sola llamada de función?
var todo = function (req, res){};
app.get("/", todo);
app.get("/blabla", todo);
app.get("/blablablabla", todo);
Algo como:
app.get("/", "/blabla", "/blablablabla", todo );
Sé que esto es un lío de sintaxis, pero solo para dar una idea de lo que me gustaría lograr, ¡una serie de rutas sería increíble!
Alguien sabe cómo hacer esto?
Respuestas:
Me encontré con esta pregunta mientras buscaba la misma funcionalidad.
@Jonathan Ong mencionó en un comentario anterior que el uso de matrices para rutas está en desuso, pero se describe explícitamente en Express 4 y funciona en Express 3.x. Aquí tienes un ejemplo de algo que puedes probar:
Desde el interior del
request
objeto, con una ruta de/hooplul/poo?bandle=froo&bandle=pee&bof=blarg
:Tenga en cuenta lo que sucede con los params: conoce los grupos de captura y los params en todas las rutas posibles, se utilicen o no en la solicitud actual.
Por lo tanto, se puede apilar múltiples rutas a través de una matriz fácilmente, pero los efectos secundarios son posiblemente impredecibles si espera obtener algo útil de la ruta que se usó a través de parámetros o grupos de captura. Probablemente sea más útil para la redundancia / aliasing, en cuyo caso funcionará muy bien.
Editar: consulte también la respuesta de @ c24w a continuación .
Edición 2: esta es una respuesta moderadamente popular. Tenga en cuenta que ExpressJS, al igual que la mayoría de las bibliotecas de Node.js, es una fiesta movible. Si bien el enrutamiento anterior todavía funciona (lo estoy usando en este momento, una característica muy útil), no puedo responder por la salida del objeto de solicitud (ciertamente es diferente de lo que he descrito). Pruebe cuidadosamente para asegurarse de obtener los resultados deseados.
fuente
:var
establece elreq.param
que no usas. solo se usa en este caso para establecer la expresión regular.(bla|blabla)
establece la expresión regular para que coincida, por lo que coincide con las cadenasbla
yblablah
.?
hace que toda la expresión regular sea opcional, por lo que también coincide/
.fuente
/bla(bla)?
también funciona, pero los parámetros posteriores no se completan correctamente (es decir,/bla(bla)?/:value
no se completanreq.params.value
). ¿Alguien sabe por qué?req.params.var
pero debe asegurarse de haberreq
pasado a la funciónDe hecho, puede pasar una variedad de rutas , como mencionó, y funciona muy bien:
fuente
Solo para desarrollar la respuesta de Kevin , esto es de los documentos 4.x :
Tienen algunos ejemplos , que incluyen:
fuente
Fui por un:
fuente
requiera el archivo de su ruta original y defina la nueva ruta así
fuente