当前位置:  开发笔记 > 编程语言 > 正文

如何使用包含斜杠字符的参数?

如何解决《如何使用包含斜杠字符的参数?》经验,为你挑选了1个好方法。

我在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,因为带斜杠的参数被解释为两个不同的参数......任何想法?



1> Amit..:

Express内部使用path-to-regexp进行路径匹配.

如文档中所述,您可以通过在参数本身之后添加括号中包含的正则表达式来使用"自定义匹配参数".

您可以使用以下路径获取所需的结果:

router.route('/getPersonByKey/:key([^/]+/[^/]+)').
  get(function(req, res) { // get person by key
    var key = req.params.key;
    // ...
  }
);


您可以在此处测试并验证此路线或任何其他路线.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有