【问题标题】:express.js: capture generic routes with numeric Idexpress.js:使用数字 ID 捕获通用路由
【发布时间】:2014-03-07 10:54:20
【问题描述】:

我正在尝试为 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),也可以捕获最后一个路径

【问题讨论】:

    标签: javascript regex node.js express routes


    【解决方案1】:

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

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

    现在如果我尝试

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

    我明白了

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-17
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 2012-03-17
      • 2013-05-22
      • 1970-01-01
      相关资源
      最近更新 更多