我想知道是否可以在查询本身中检查Express.js URL查询的特定格式(正则表达式)(不需要调用回调。)
具体来说,我想执行不同的操作,具体取决于查询URL是字符串还是数字(如用户ID和用户名):
app.get('/:int', function(req, res){
// Get user info based on the user id.
}
app.get('/:string', function(req, res){
// Get user info based on the user name.
}
我可以在app.get
的第一个参数中过滤数字,或者除了在回调中进行测试外,它是不可能的:
/(\d)+/.test(req.params.int)
/(\w)+/.test(req.params.string)
答案 0 :(得分:16)
您可以使用括号指定命名参数的模式:
app.get('/:int(\\d+)', function(req, res){
// Get user info based on the user id.
}
app.get('/:string(\\w+)', function(req, res){
// Get user info based on the user name.
}
答案 1 :(得分:3)
express路由器也接受regexp作为第一个参数。
app.get(/(\d+)/, function(req, res, next) {})
app.get(/(\w+)/, function(req, res, next) {})