person
集合中的My MongoDB密钥是这样的:
TWITTER/12345678
GOOGLE/34567890
TWITTER/45678901
...
我以这种方式定义getPersonByKey
路线:
router.route('/getPersonByKey/:providerKey/:personKey').
get(function(req, res) { // get person by key
var key = req.params.providerKey + '/' + req.params.personKey;
// ...
}
);
当然我更喜欢写这样的东西:
router.route('/getPersonByKey/:key').
get(function(req, res) { // get person by key
var key = req.params.key;
// ...
}
);
但这不起作用,因为GET http://localhost/getPersonByKey/TWITTER/12345678
当然会产生404,因为带斜杠的参数被解释为两个不同的参数......
有什么想法吗?
答案 0 :(得分:9)
Express内部使用path-to-regexp进行路径匹配。
如documentation中所述,您可以使用"自定义匹配参数"通过在参数本身之后添加括在括号中的正则表达式。
您可以使用以下路径获取所需的结果:
router.route('/getPersonByKey/:key([^/]+/[^/]+)').
get(function(req, res) { // get person by key
var key = req.params.key;
// ...
}
);
<小时/> 您可以测试并验证此路线here。
答案 1 :(得分:1)
如果您的参数中包含斜杠,您可以使用它
app.get('/getPersonByKey/:key(*)', function(req, res) { ... })
它对我有用(至少在 Express 4 中)。就我而言,我使用了 ABC1/12345/6789(10)
之类的参数。
希望这有用。