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

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


当前回答

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

其他回答

白夸克反应很好。但在Node.js和Express.js的当前版本中,它还需要一行代码。确保添加“require-http”(第二行)。我在这里发布了一个更完整的示例,展示了此呼叫的工作原理。运行后,键入http://localhost:8080/?name=abel&fruit=apple在浏览器中,您将根据代码得到一个很酷的响应。

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

app.configure(function(){
    app.set('port', 8080);
});

app.get('/', function(req, res){
  res.writeHead(200, {'content-type': 'text/plain'});
  res.write('name: ' + req.query.name + '\n');
  res.write('fruit: ' + req.query.fruit + '\n');
  res.write('query: ' + req.query + '\n');
  queryStuff = JSON.stringify(req.query);
  res.end('That\'s all folks'  + '\n' + queryStuff);
});

http.createServer(app).listen(app.get('port'), function(){
    console.log("Express server listening on port " + app.get('port'));
})

考虑一下这个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
});

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

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

如果您想避免表达,请使用以下示例:

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

function func111(req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  var q = url.parse(req.url, true);
  res.end("9999999>>> " + q.query['user_name']); 
}

http.createServer(func111).listen(3000); 

用法:

curl http://localhost:3000?user_name=user1

通过yl

表达特定的简单获取方法

查询字符串(在?之后),例如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);