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

Mad*_*ist 1 routing routes node.js express

我正在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});   
});
Run Code Online (Sandbox Code Playgroud)

一个人如何建立一条能对诸如此类的东西做出反应的路线/api?paramA=valueA&paramB=valueB

Mad*_*ist 5

我最终用了这个。这段代码完全按照我在最初的问题中要做的事情进行。

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
   }
});
Run Code Online (Sandbox Code Playgroud)


jfr*_*d00 5

在Express路由中使用此URL:

 /api?paramA=valueA&paramB=valueB
Run Code Online (Sandbox Code Playgroud)

你做这个:

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)
});
Run Code Online (Sandbox Code Playgroud)

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


Gon*_*ols 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
   }
});
Run Code Online (Sandbox Code Playgroud)