如何使用包含斜线字符的参数?
我person
collections中的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,因为带斜线的参数被解释为两个不同的参数…任何想法?
Express在内部使用path-to-regexp进行path匹配。
正如文档中所解释的那样,通过在参数本身之后添加一个括号中的正则expression式,可以使用“自定义匹配参数”。
您可以使用以下path获取您需要的结果:
router.route('/getPersonByKey/:key([^/]+/[^/]+)'). get(function(req, res) { // get person by key var key = req.params.key; // ... } );
你可以在这里testing和validation这个或者其他的路线。