2017-05-09 36 views
0

我建立在节点的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回应的路线?

回答

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 
    } 
}); 
+0

如果我需要检查两个参数是否存在,该怎么办? – MadPhysicist

+0

也就是说,这仍然是一个坚实的解决方案? – MadPhysicist

+0

刚刚编辑我的答案。 –

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 
    } 
}); 
+0

这不是推荐的方式来做到这一点。 'req.query'是从查询字符串访问已分析参数的合适位置。 – jfriend00

+0

当然可以。感谢您指出了这一点!我复制了错误的代码。 – MadPhysicist

2

要在路线与快递使用这个网址:

/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。请记住,所有值都是字符串。如果你希望他们是一个数字或其他数据类型,那么你必须将它们解析为另一种类型。

相关问题