我正在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¶mB=valueB
?
答案 0 :(得分:4)
在Express:
的路线中使用此URL /api?paramA=valueA¶mB=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参数更加容易。
router.get('/api/users/:id&:pending', function (req, res) {
console.log(req.params.id);
console.log(req.params.pending);
});