Mar*_*coS 5 javascript regex routes node.js express
我在person集合中的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,因为带斜杠的参数被解释为两个不同的参数......任何想法?
Ami*_*mit 10
Express内部使用path-to-regexp进行路径匹配.
如文档中所述,您可以通过在参数本身之后添加括号中包含的正则表达式来使用"自定义匹配参数".
您可以使用以下路径获取所需的结果:
router.route('/getPersonByKey/:key([^/]+/[^/]+)').
  get(function(req, res) { // get person by key
    var key = req.params.key;
    // ...
  }
);
小智 8
如果您的参数中包含斜杠,则可以使用它
app.get('/getPersonByKey/:key(*)', function(req, res) { ... })
它对我有用(至少在 Express 4 中)。就我而言,我使用了诸如 之类的参数ABC1/12345/6789(10)。
希望这有用。
| 归档时间: | 
 | 
| 查看次数: | 3174 次 | 
| 最近记录: |