Domanda

Ho molti itinerari come:

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

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

dove page1 e page2 sono due controller e il :action è il "metodo" Devo chiamare. Le pagine dovrebbero essere:

  1. / page1 / delete
  2. / page1 / Modifica
  3. / page1 / add

cerco di organizzare il mio codice per semplificare il lavoro a seguito di un sistema di MVC. Qualcuno potrebbe darmi un consiglio per quanto riguarda, come posso chiamare il metodo di un controller leggendo il parametro che uso come :action ho bisogno di controllare se il metodo esiste se non (se qualcuno scrittura /page1/blablabla) mi restituisce un Errore HTTP 404.

Grazie!

È stato utile?

Soluzione

Ecco un esempio su come raggiungere questo obiettivo. Si può leggere di più su questo sulla guida 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;
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top