我有很多路线,如:
//routes
app.get("page1/:action", function(req, res) {
...
}
app.get("page2/:action", function(req, res) {
...
}
其中page1
和page2
是两个控制器,而:action
是我需要调用的“方法”。页面应为:
我尝试组织我的代码以简化MVC系统之后的工作。
有人可以给我一个建议,如何通过读取我用作:action
的参数来调用控制器的方法我需要检查方法是否存在(如果有人写/page1/blablabla
)我返回404 http错误。
谢谢!
答案 0 :(得分:5)
以下是如何实现这一目标的示例。您可以在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;
});