expressのルーティング共通処理
nodejsでHTTPサーバーを立てるときに利用するexpress。
色々なルーティングを記述していくと、いずれのルーティングでも共通処理を噛ませたいという気持ちになる。
共通処理というのは、セッションが切れていたときにログイン画面に戻す処理のことで、今までは下記のように個々のルーティングごとに記述するアホなことをやっていた。
app.post('/select', ( req, res ) => { // ①共通処理:セッション情報の存在判定 if ( !req.session.pass ) { res.json(440, {result:'expired', message:'セッションが切れました。ログインからやり直してください。'}); return; } // ②ルーティング固有の処理 res.header("Content-Type", "application/json; charset=utf-8"); res.json( something ); }
Nodeクックブックを読んでると、next()を使えばよいことがわかった。
// ①共通処理:セッション情報の存在判定 const checkSession = ( req, res, next) => { if ( !req.session.pass ) { res.json(440, {result:'expired', message:'セッションが切れました。ログインからやり直してください。'}); return; } next() } ; app.post('/select', checkSession, ( req, res ) => { // ②ルーティング固有の処理 res.header("Content-Type", "application/json; charset=utf-8"); res.json( something ); }
expressのpost, getなどのHTTPメソッドには、第二引数以降に複数のcallbackを指定でき、next()を使うことで順番に処理を行ってくれる。
今回では、checkSession(共通処理)がまず実行されsession状態が切れていなければ、next()により次のcallback(固有の処理)を行ってくれる。
- 作者: David Mark Clements,和田祐一郎
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/02/23
- メディア: 大型本
- 購入: 2人 クリック: 4回
- この商品を含むブログ (5件) を見る