我可以使用下面的来获取查询字符串。
var query_string = request.query;
我需要的是未解析的原始查询字符串。我怎么得到它?对于下面的 url,查询字符串是{ tt: 'gg' }
,我需要tt=gg&hh=jj
等....
http://127.0.0.1:8065?tt=gg
Server running at http://127.0.0.1:8065
{ tt: 'gg' }
您可以req.originalUrl
在 express 3.x+ 中使用。(旧版本可以req.url
从节点的 http 模块使用。)这应该产生原始字符串,不包括?
:
var query_index = req.originalUrl.indexOf('?');
var query_string = (query_index>=0)?req.originalUrl.slice(query_index+1):'';
// 'tt=gg&hh=jj' or ''
请注意,如果您有a#
来表示查询的结尾,它将不会被识别。
如果要将字符串传递给新 URL,则应包括?
:
var query_index = req.originalUrl.indexOf('?');
var query_string = (query_index>=0)?req.originalUrl.slice(query_index):'';
// '&tt=gg&hh=jj' or ''
res.redirect('/new-route'+query_string);
// redirects to '/newroute?tt=gg&hh=jj'
Express 使用parseurl
哪些存储_parsedUrl
在request
对象中。原始字符串查询可以通过request._parsedUrl.query
.
var queryString = Object.keys(request.query).map(key => key + '=' + request.query[key]).join('&');
或者
var queryString = require('querystring').stringify(request.query);