查询字符串中具有多个参数的Express +节点路由

时间:2017-05-09 20:47:30

标签: node.js express routing routes

我正在Node中构建一个API,并且正在努力解决问题。也就是说,我知道如何构建/api/:paramA/:paramB类型的路由。在这种情况下,有两个参数。

代码将是这样的:

router.get('/test/:paramA/:paramB', function(req, res) {
    res.json({ message: 'hooray! welcome to our api!' + req.params.paramA + req.params.paramB});   
});

如何构建一条能够响应/api?paramA=valueA&paramB=valueB

之类的路线

4 个答案:

答案 0 :(得分:4)

在Express:

的路线中使用此URL
 /api?paramA=valueA&paramB=valueB

你这样做:

router.get('/api', function(req, res) {
    console.log(req.query.paramA);     // valueA
    console.log(req.query.paramB);     // valueB
    console.log(req.query.paramC);     // undefined (doesn't exist)
});

查询参数被解析为req.query object。如果查询字符串中不存在查询参数名称,则query.query对象上将不存在该属性,并且尝试读取该属性将返回undefined。请记住,所有值都是字符串。如果您希望它们是数字或其他数据类型,则必须将它们解析为其他类型。

答案 1 :(得分:1)

如果您确定要传递的GET参数,那么您可以像这样轻松地执行此操作:

router.get('/api', function(req, res) {
    if(typeof req.params.paramA !== 'undefined' && typeof req.params.paramB !== 'undefined') {
    let paramA = req.params.paramA,   
        paramB = req.params.paramB;
    //do something with paramA and paramB
   }
});

答案 2 :(得分:1)

我最终使用了这个。这段代码正是我在原始问题中完成的工作。

router.get('/api', function(req, res) {
    if(typeof req.query.paramA !== 'undefined' && typeof req.query.paramB !== 'undefined') {
    let paramA = req.query.paramA,   
        paramB = req.query.paramB;
    //do something with paramA and paramB
   }
});

答案 3 :(得分:1)

在路由器中定义url参数更加容易。

  

示例网址:http://www.example.com/api/users/3&0

router.get('/api/users/:id&:pending', function (req, res) {
  console.log(req.params.id);
  console.log(req.params.pending);
});