Express4のルータのパスからの値の取り方
パスに正規表現を書いて、グループでキャプチャするやり方。
app.get(/\/(\d+)$/, function(req, res, next) {
res.send(req.params[0]);
});
[0]がちょっと格好悪い感じがする。名前で取りたい。
app.param('id', /\d+$/);
app.get('/:id', function(req, res, next) {
res.send(req.params.id);
});
これで取れるようなことがドキュメントのapp.paramのところに書いてあるんだけど、何故かエラーで止まる。読み違いしてるんだろうか。
app.get('/:id(\\d+$)', function(req, res, next) {
res.send(req.params.id);
});
これなら名前も付けられるし、正規表現も書ける。(文字列中なのでエスケープが若干増えるけど)
ついでに、Routerインスタンスを使っている場合はそれだけで済む。