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

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


当前回答

在express.js中,你可以很容易地得到它,你需要在控制器函数中做的就是:

app.get('/', (req, res, next) => {
   const {id} = req.query;
   // rest of your code here...
})

仅此而已,假设您使用的是es6语法。

PD.{id}代表Object destructuring,一个新的es6特性。

其他回答

表达特定的简单获取方法

查询字符串(在?之后),例如https://...?user=abc&id=123var express=要求('express');var app=express();app.get('/',函数(req,res){res.send('id:'+req.query.id);});app.listen(3000);查询参数,如https://.../get/users/:idvar express=要求('express');var app=express();app.get('/get/users/:id',函数(req,res){res.send('id:'+req.params.id);});app.listen(3000);

在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;

你应该可以这样做:

var http = require('http');
var url  = require('url');

http.createServer(function(req,res){
    var url_parts = url.parse(req.url, true);
    var query = url_parts.query;

    console.log(query); //{Object}

    res.end("End")
})

考虑一下这个url->/api/endpoint/:id?名称=萨希尔这里id是param,其中as name是查询。您可以像这样在nodejs中获取此值

app.get('/api/endpoint/:id', (req, res) => {
  const name = req.query.name; // query
  const id = req.params.id //params
});
app.get('/user/:id', function(req, res) {
    res.send('user' + req.params.id);    
});

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