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

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

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

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

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


当前回答

更新:req.param()现在已弃用,所以以后不要使用这个答案。


你的答案是首选的方式,但我想我要指出,你也可以访问url, post和路由参数都与req。参数(parameterName defaultValue)。

在你的情况下:

var color = req.param('color');

速递指南:

查找的顺序如下: req.params req.body req.query

注意,指南中有如下规定:

直接访问请求。身体,点播。Params和req。查询应该是 有利于清晰-除非你真正接受来自每个对象的输入。

然而,在实践中,我发现req.param()已经足够清晰,并使某些类型的重构更容易。

其他回答

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

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

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

});

因此,在检出express引用之后,我发现req.query.color将返回我正在寻找的值。

要求的事情。params指的是URL和req中带有“:”的项。查询引用与'?'相关的项

例子:

GET /something?color1=red&color2=blue

然后在express中,处理程序:

app.get('/something', (req, res) => {
    req.query.color1 === 'red'  // true
    req.query.color2 === 'blue' // true
})

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

你需要在单个路由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

只需使用app.get:

app.get('/some/page/here', (req, res) => {
    console.log(req.query.color) // Your color value will be displayed
})

你可以在expressjs.com的文档api上看到: http://expressjs.com/en/api.html

更新:req.param()现在已弃用,所以以后不要使用这个答案。


你的答案是首选的方式,但我想我要指出,你也可以访问url, post和路由参数都与req。参数(parameterName defaultValue)。

在你的情况下:

var color = req.param('color');

速递指南:

查找的顺序如下: req.params req.body req.query

注意,指南中有如下规定:

直接访问请求。身体,点播。Params和req。查询应该是 有利于清晰-除非你真正接受来自每个对象的输入。

然而,在实践中,我发现req.param()已经足够清晰,并使某些类型的重构更容易。