ExpressJSのルーティングを分かりやすくするモジュール

ExpressJSを使っていると、ルーティングの記述がだんだん煩雑になってきます。
app.get()やapp.post()がいくつも並び、それぞれの関係が分かりにくくなってきてしまうのを解消できるのがexpress-namespaceです。

例えば、以下の様なリクエストがある場合を想定します。

GET /forum/12
GET /forum/12/view
GET /forum/12/edit
GET /forum/12/thread/5
DELETE /forum/12

このルーティングを以下の様に整理して記述する事ができます。

app.namespace('/forum/:id', function(){
  app.get('/(view)?', function(req, res){
    res.send('GET forum ' + req.params.id);
  });

  app.get('/edit', function(req, res){
    res.send('GET forum ' + req.params.id + ' edit page');
  });

  app.namespace('/thread', function(){
    app.get('/:tid', function(req, res){
      res.send('GET forum ' + req.params.id + ' thread ' + req.params.tid);
    });
  });

  app.del('/', function(req, res){
    res.send('DELETE forum ' + req.params.id);
  });
});

app.namespace()でグループ化し、その下に階層構造を作る事で、リクエストの内容を分かりやすくなっています。

複数のアプリや、ユーザディレクトリごとに分ける場合なんかにも便利かも知れません。