我知道如何获取查询的参数,像这样:

app.get('/sample/:id', routes.sample);

在这种情况下,我可以使用req.params.id来获取参数(例如/sample/2中的2)。

然而,对于/sample/2这样的url ?color=红色,我怎么能访问变量颜色?

我试过req.params.color,但不起作用。


当前回答

@Zugwait的答案是正确的。Req.param()已弃用。你应该使用req。参数要求。查询或req.body。

但我想说得更清楚一点:

要求的事情。参数将只由路由值填充。也就是说,如果你有一个像/users/:id这样的路由,你可以在req.params.id或req.params['id']中访问这个id。

要求的事情。查询和请求。Body将填充所有参数,不管它们是否在路由中。当然,查询字符串中的参数将在req中可用。post body中的查询和参数将在req.body中可用。

所以,回答你的问题,因为颜色不在路由,你应该能够得到它使用req.query.color或req.query['color']。

其他回答

快捷手册上说你应该用req。query来访问QueryString。

// Requesting /display/post?size=small
app.get('/display/post', function(req, res, next) {

  var isSmall = req.query.size === 'small'; // > true
  // ...

});

@Zugwait的答案是正确的。Req.param()已弃用。你应该使用req。参数要求。查询或req.body。

但我想说得更清楚一点:

要求的事情。参数将只由路由值填充。也就是说,如果你有一个像/users/:id这样的路由,你可以在req.params.id或req.params['id']中访问这个id。

要求的事情。查询和请求。Body将填充所有参数,不管它们是否在路由中。当然,查询字符串中的参数将在req中可用。post body中的查询和参数将在req.body中可用。

所以,回答你的问题,因为颜色不在路由,你应该能够得到它使用req.query.color或req.query['color']。

您可以简单地使用req。查询get查询参数:

app.get('/', (req, res) => {
    let color1 = req.query.color1
    let color2 = req.query.color2
})

url模块提供了url解析和解析的实用程序。URL解析不使用Express:

const url = require('url');
const queryString = require('querystring');

let rawUrl = 'https://stackoverflow.com/?page=2&size=3';

let parsedUrl = url.parse(rawUrl);
let parse = queryString.parse(parsedUrl.query);

// parse = { page: '2', size: '3' }

另一种方法:

const url = require('url');

app.get('/', (req, res) => {
  const queryObject = url.parse(req.url,true).query;
});

url.parse (req.url,真)。查询返回{color1: '红色',color2: '绿色'}。 url.parse (req.url,真)。主机返回'localhost:8080'。 url.parse (req.url,真)。搜索返回'?color1=red&color2=green'。

使用要求。查询,用于获取路由中查询字符串参数中的值。 参考req.query。 如果在路由http://localhost:3000/?name=satyam中,你想获取name参数的值,那么你的“get”路由处理程序将像这样:-

app.get('/', function(req, res){
    console.log(req.query.name);
    res.send('Response send to client::'+req.query.name);

});

查询字符串和参数不一致。

你需要在单个路由url中使用两者

请检查下面的例子可能对你有用。

app.get('/sample/:id', function(req, res) {

 var id = req.params.id; //or use req.param('id')

  ................

});

让链接通过你的第二个段是你的id示例:http://localhost:port/sample/123

如果你遇到问题,请使用'?的运营商

  app.get('/sample', function(req, res) {

     var id = req.query.id; 

      ................

    });

获取链接就像这个例子:http://localhost:port/sample?id=123

两者都在一个例子中

app.get('/sample/:id', function(req, res) {

 var id = req.params.id; //or use req.param('id')
 var id2 = req.query.id; 
  ................

});

获取链接示例:http://localhost:port/sample/123?id=123