express.js:捕获带有数字Id的通用路由

时间:2014-02-10 07:49:49

标签: javascript regex node.js express routes

我正在尝试为express.js路由定义通用处理程序

这个想法是为了得到像

这样的东西

get / api / xxx / yyy - >获取所有数据

get / api / xxx / yyy / 11->得到记录11

我需要在一个变量上捕获xxx / yyy,在另一个变量中捕获11个

这很好用:

app.get('/api/*', function(req, res, next) {

我没有抓到任何东西,但我用req.path属性

读取它

但我似乎无法解决这个问题:

app.get('/api/*/:id(\\d+)$', function(req, res, next) {

如果我尝试:

http://localhost:3000/api/clientes/2

这是我在req.params中得到的:

req.params = [ '2', id: 'clientes' ]

似乎路径绑定到id,并且id未绑定到任何变量。

此外,如果我尝试抓取这个:

http://localhost:3000/api/clientes/nuevos/2

路线不匹配

所以,我正在寻找一个正则表达式,允许我捕捉几个路径(xxx / yyy),如果它是一个数字(11)

也是最后一个

1 个答案:

答案 0 :(得分:0)

我可以使用正则表达式而不是字符串来解决它:

app.get(/\/api\/(.*)\/(\d+)/, function(req, res, next) {

现在,如果我尝试

http://localhost:3000/api/clientes/menores/71

我得到了

req.params = [ 'clientes/menores', '71' ]

但我想知道是否有某种方法可以使用:id marker ...