Как справиться с различными действиями одного и того же контроллера в Express.js?
Вопрос
У меня много маршрутов, таких как:
//routes
app.get("page1/:action", function(req, res) {
...
}
app.get("page2/:action", function(req, res) {
...
}
куда page1
а также page2
два контроллера и :action
это «метод», который мне нужно позвонить. Страницы должны быть:
- /page1/удалить
- /page1/изменить
- /page1/добавить
Я пытаюсь организовать свой код, чтобы упростить задание после системы MVC. Может ли кто -нибудь дать мне совет относительно, как я могу назвать метод контроллера, прочитав параметр, который я использую как :action
Мне нужно проверить, существует ли метод, если нет (если кто -то напишет /page1/blablabla
) Я возвращаю ошибку HTTP 404.
Благодарю вас!
Решение
Вот пример того, как это добиться. Вы можете прочитать больше об этом в руководстве 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;
});
Не связан с StackOverflow