Saltar al contenido

Cómo configurar rutas dinámicas con express.js

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')());

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *