Pregunta

Tengo muchas rutas como:

//routes
app.get("page1/:action", function(req, res) {
  ...
}

app.get("page2/:action", function(req, res) {
  ...
}

dónde page1 y page2 son dos controladores y el :action es el "método" que necesito llamar. Las páginas deberían ser:

  1. /Page1/Eliminar
  2. /página1/modificar
  3. /página1/agregar

Intento organizar mi código para simplificar el trabajo después de un sistema MVC. ¿Alguien podría darme un consejo sobre cómo puedo llamar al método de un controlador leyendo el parámetro que uso como :action Necesito verificar si el método existe si no (si alguien escribe /page1/blablabla) Devuelve un error 404 HTTP.

¡Gracias!

¿Fue útil?

Solución

Aquí hay un ejemplo sobre cómo lograr esto. Puede leer más sobre esto en la Guía ExpressJS: http://expressjs.com/guide/error-handling.html

function NotFound(msg){
  this.name = 'NotFound';
  Error.call(this, msg);
  Error.captureStackTrace(this, arguments.callee);
}
NotFound.prototype.__proto__ = Error.prototype;

//routes
app.get("page1/:action", function(req, res) {
  switch(req.params.action) {
    case 'delete':
      // delete 'action' here..
      break;
    case 'modify':
      // delete 'modify' here..
      break;
    case 'add':
      // delete 'add' here..
      break;
    default:
      throw new NotFound(); // 404 since action wasn't found
      // or you can redirect
      // res.redirect('/404');
  }
}

app.get('/404', function(req, res){
  throw new NotFound;
});
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top