在命名参数上重新定义正则表达式
restify regular expression on named parameter
我正在使用 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
}
有什么方法可以将它们分成两个独立的关注点?
看起来你大部分已经自己完成了。只需从您的路线中删除标识符并确保您使用正则表达式捕获组。
//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 的意见。
我正在使用 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
}
有什么方法可以将它们分成两个独立的关注点?
看起来你大部分已经自己完成了。只需从您的路线中删除标识符并确保您使用正则表达式捕获组。
//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 的意见。