Node Express服务器获取第一个“?”在查询中

时间:2015-12-04 18:24:43

标签: node.js express

我正在尝试使用以下参数对我的节点服务器进行调用

http://localhost:8080/products/?a=13214?b=awedf

我收到错误:无法获取/产品/?a = 13214?b = awedf

当我删除'?'时在字母“a”之前,我得到以下查询:

{ b: 'awedf' }

我希望能够添加'?'并得到以下查询或类似的东西给我以下数组:

{ a:13214, b: 'awedf' }

这是我的代码:

var express = require('express'),
    app = express();

var timeout = 0;

app.use(express.static(__dirname, '/'));

app.get('/products/:siteId', function(req, res) {
    console.log(req.query);
    res.json(products);
});

app.listen(8080);

console.log('Express listening on http://localhost:8080/');

  var products = [
      {"Product":"Product A"}
      ,{"Product":"Product B"}
  ];

编辑: 我通过更改查询参数来修复它:

http://localhost:8080/product?a=13214&b=awedf

2 个答案:

答案 0 :(得分:1)

而不是第二个?添加&。参数用符号分隔。问号表示查询字符串的开头

此外,您在路径中不需要:siteId。如果您想使用:siteId,那么您的网址会显示为/ products / 1234?b = abc

req。 params .siteId === 1234和req.query.b === 'abc'

答案 1 :(得分:1)

因此,您应该?之前的b替换为&http://localhost:8080/products/?a=13214&b=awedf

编辑:由于您无法修改参数,而且您已经拥有/:siteId,因此您应该能够像a那样访问req.params.siteId的值: