我有很多路线,例如:

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

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

其中page1page2是两个 Controller ,而:action是我需要调用的“方法”。这些页面应该是:
  • /page1/删除
  • /page1/修改
  • /page1/添加

  • 我尝试组织代码以简化MVC系统之后的工作。
    有人可以给我一个建议,我如何通过读取用作:action的参数来调用 Controller 的方法,我需要检查该方法是否存在(如果有人编写/page1/blablabla),我返回404 http错误。

    谢谢!

    最佳答案

    这是有关如何实现此目的的示例。您可以在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;
    });
    

    关于node.js - 如何在Express.JS中处理同一 Controller 的不同 Action ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8311164/

    10-09 21:31