Comment gérer les différentes actions du même contrôleur dans express.js?

StackOverflow https://stackoverflow.com/questions/8311164

  •  25-10-2019
  •  | 
  •  

Question

J'ai beaucoup de routes comme:

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

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

page1 et page2 sont deux contrôleurs et la :action est la « méthode » que je dois appeler. Les pages doivent être:

  1. / page1 / Supprimer
  2. / page1 / modifier
  3. / page1 / add

J'essaie d'organiser mon code pour simplifier le travail suivant un système MVC. Quelqu'un pourrait-il me donner un avis au sujet, comment puis-je appeler la méthode d'un contrôleur en lisant le paramètre que j'utilise comme :action Je dois vérifier si la méthode existe sinon (si quelqu'un écriture /page1/blablabla) Je retourne une 404 http erreur.

Merci!

Était-ce utile?

La solution

Voici un exemple sur la façon d'y parvenir. Vous pouvez en savoir plus sur ce sur le guide express.js: 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;
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top