Wie gehe ich in Express.js mit unterschiedlichen Aktionen desselben Controllers um?

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

  •  25-10-2019
  •  | 
  •  

Frage

Ich habe viele Routen wie:

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

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

wo page1 und page2 sind zwei Controller und die :action ist die "Methode", die ich anrufen muss. Die Seiten sollten sein:

  1. /Seite1/löschen
  2. /Seite1/ändern
  3. /Seite1/Hinzufügen

Ich versuche meinen Code zu organisieren, um den Job nach einem MVC -System zu vereinfachen. Könnte mir jemand einen Rat geben, wie kann ich die Methode eines Controllers nennen, indem ich den Parameter lese, den ich verwende :action Ich muss überprüfen, ob die Methode existiert, wenn nicht (ob jemand schreibt /page1/blablabla) Ich gibt einen 404 HTTP -Fehler zurück.

Vielen Dank!

War es hilfreich?

Lösung

Hier ist ein Beispiel, wie man dies erreicht. Weitere Informationen finden Sie im ExpressJS -Leitfaden: 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;
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top