我们可以在Node.js中获取查询字符串中的变量吗,就像在PHP中获取$_get中的变量一样?

我知道在Node.js中,我们可以获取请求中的URL。是否有获取查询字符串参数的方法?


当前回答

很简单:

示例URL:

http://stackoverflow.com:3000/activate_accountid=3&activatekey=$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

您可以使用以下命令打印查询字符串的所有值:

console.log("All query strings: " + JSON.stringify(req.query));

输出

所有查询字符串:{“id”:“3”,“activatekey”:“$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK“}

要打印特定内容:

console.log("activatekey: " + req.query.activatekey);

输出

激活:$2a$08$jvGevXUOvYxKsiBt.PpMs.zgzD4C/wwTsvjzfUrqLrgS3zXJVfVRK

其他回答

如果您正在使用ES6和Express,请尝试以下销毁方法:

const {id, since, fields, anotherField} = request.query;

在上下文中:

const express = require('express');
const app = express();

app.get('/', function(req, res){
   const {id, since, fields, anotherField} = req.query;
});

app.listen(3000);

也可以在析构函数中使用默认值:

//测试样品请求常量要求={查询:{id:'123',字段:[a','b','c']}}常量{身份证件,since=new Date().toString(),字段=['x'],anotherField='默认'}=请求查询;console.log(id,since,fields,anotherField)

在Express中,这已经为您完成了,您可以简单地使用req.query:

var id = req.query.id; // $_GET["id"]

否则,在NodeJS中,您可以访问req.url和内置的url模块来url.parse它:

var url = require('url');
var url_parts = url.parse(request.url, true);
var query = url_parts.query;
app.get('/user/:id', function(req, res) {
    res.send('user' + req.params.id);    
});

您可以使用这个,也可以尝试使用主体解析器来解析请求参数中的特殊元素。

我从其他答案中吸取了教训,并决定在整个网站中使用此代码:

var query = require('url').parse(req.url,true).query;

那你可以打电话

var id = query.id;
var option = query.option;

get的URL应该在哪里

/path/filename?id=123&option=456

对于Express.js,您需要执行req.params:

app.get('/user/:id', function(req, res) {
  res.send('user' + req.params.id);    
});