Express.jsの同じコントローラーの異なるアクションを処理する方法は?
質問
私は次のような多くのルートを持っています:
//routes
app.get("page1/:action", function(req, res) {
...
}
app.get("page2/:action", function(req, res) {
...
}
どこ page1
と page2
2つのコントローラーと :action
呼び出す必要がある「方法」です。ページは次のとおりです。
- /page1/delete
- /page1/変更
- /page1/add
MVCシステムに続いてジョブを簡素化するためにコードを整理しようとします。誰かが私にアドバイスを与えてもらえますか? :action
そうでない場合は方法が存在するかどうかを確認する必要があります(誰かが書いた場合 /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;
});
所属していません StackOverflow