Te sugerimos que revises esta resolución en un ambiente controlado antes de pasarlo a producción, saludos.
Solución:
Yo haría lo mismo que hiciste por /modules/:name
app.get('/article/:id', function(req , res)
res.render('article' + req.params.id);
);
Sería más significativo desde el punto de vista del descanso.
Si no puede hacerlo por alguna razón en particular, es posible que desee hacer algo como:
var articlesEndpoints = ['/article2', '/article3'];
articlesEndpoints.forEach(function(name)
app.get(name, function(req, res)
res.render(name);
);
);
¿Es esto lo que quisiste decir?
Finalmente lo hice funcionar..
En los casos en los que obtuve, artículo 1, artículo 2, etc.:
app.get('/:name(article|article2|article3)?', function(req, res)
var name = req.params.name;
res.render(name);
);
En los casos en los que obtuve una URL de varios niveles, creé una función personalizada:
function geturl(url)
app.get('/' + url + '/' + ':name', function(req, res)
var name = req.params.name;
res.render(url + '/' + name);
);
;
Hay muchas formas de implementar rutas rápidas dinámicas. Depende en gran medida de la estructura que hayas implementado en tu proyecto, aquí te dejo un ejemplo de rutas dinámicas y espero te sea de utilidad.
RouterService.js
module.exports = (function(myCustomRoutes)
let express = require('express');
let router = express.Router();
let methods = Object.keys(myCustomRoutes); // getting methods ('get', 'post'... etc)
let routesMethod = null;
let url = null;
for(i in methods)
routesMethod = Object.keys(myCustomRoutes[methods[i]]);
for(j in routesMethod)
url = '/' + routesMethod[j];
url += '/:' + myCustomRoutes[methods[i]][routesMethod[j]].params.join('/:');console.log(url);
router[methods[i]](url, myCustomRoutes[methods[i]][routesMethod[j]].controller);
return router;
)();
CustomRoutes.js
module.exports = (function()
let routes = get: , post: ;
let routerService = require('./RouterService');
// GET: /dynamic1
routes.get.dynamic1 =
params: [],
controller: function(req, res, next)
res.send('route 1');
;
// GET: /dynamic2/:param1
routes.get.dynamic2 =
params: [':param1'],
controller: function(req, res, next)
res.send('route 2');
;
// POST: /dynamic3/:param1/:param1
routes.post.dynamic3 =
params: ['param1', 'param2'],
controller: function(req, res, next)
res.send('route 3');
;
/*
* Export a router with paths
* GET: /dynamic1
* GET: /dynamic2/:param1
* POST: /dynamic3/:param1/:param1
**/
return routerService(routes);
)();
aplicación.js
let express = require('express');
let app = express();
/*
* Option 1
* GET: /dynamic1
* GET: /dynamic2/:param1
* POST: /dynamic3/:param1/:param1
**/
app.use(require('CustomRoutes')());
/*
* Option 2
* GET: /api/v1/dynamic1
* GET: /api/v1/dynamic2/:param1
* POST: /api/v1/dynamic3/:param1/:param1
**/
app.use('/api/v1', require('CustomRoutes')());