【问题标题】:restify regular expression on named parameter在命名参数上重新调整正则表达式
【发布时间】:2015-09-07 13:02:16
【问题描述】:

我正在使用 restify 2.8.4。

了解不支持带有正则表达式的命名参数 Mixing regex and :params in route #247

而不是将两个逻辑拼凑到一个块中。

server.get ('/user/:id', function (req, res, next) {
  var id = req.params.id; 
  // check with isNaN()
  // if string do this
  // if number do that
}

我更喜欢下面的代码结构:

//hit this route when named param is a number
server.get (/user\/:id(\\d+)/, function (req, res, next) {
  var id = req.params.id; 
  // do stuff with id
}

//hit this route when named param is a string
server.get (/user\/:name[A-Za-z]+/, function (req, res, next) {
  var name = req.params.name; 
  // do stuff with name
}

有没有办法可以将它们分成两个独立的关注点?

【问题讨论】:

    标签: restify


    【解决方案1】:

    看起来您大部分已经自己完成了。只需从您的路线中删除标识符并确保您使用正则表达式捕获组。

    //hit this route when named param is a number
    server.get (/user\/(\d+)/, function (req, res, next) {
        var id = req.params[0]; 
        // do stuff with id
    }
    
    //hit this route when named param is a string
        server.get (/user\/([A-Za-z]+)/, function (req, res, next) {
        var name = req.params[0]; 
        // do stuff with name
    }
    

    根据 Cheng Ping Onn 的意见编辑了答案。

    【讨论】:

    • 转义了第二个 /,几乎像宣传的那样工作。谢谢@HeadCode
    猜你喜欢
    • 2014-04-03
    • 2010-12-26
    • 2016-03-20
    • 2020-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-08-22
    • 2020-08-13
    • 1970-01-01
    相关资源
    最近更新 更多