我可以使用以下内容来获取查询字符串。
var query_string = request.query;
我需要的是原始未解析的查询字符串。我怎么做到的?对于以下网址,查询字符串为{ 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' }
答案 0 :(得分:31)
您可以按照URL示例使用node
的{{3}}模块:
require('url').parse(request.url).query
e.g。
node> require('url').parse('?tt=gg').query
'tt=gg'
或者直接转到substr
?
var i = request.url.indexOf('?');
var query = request.url.substr(i+1);
(这是require('url').parse()
在幕后做的事情)
答案 1 :(得分:7)
您可以在快递3.x +中使用req.originalUrl
。 (较旧的版本可以使用节点的http模块中的req.url
。)这应该生成原始字符串,不包括?
:
var query_index = req.originalUrl.indexOf('?');
var query_string = (query_index>=0)?req.originalUrl.slice(query_index+1):'';
// 'tt=gg&hh=jj' or ''
请注意,如果您有a #
to denote the end of the query,则无法识别。
如果您想将字符串传递给新网址,则应包含?
:
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'
答案 2 :(得分:2)
Express使用parseurl
将_parsedUrl
存储在request
对象中。可以通过string query访问原始request._parsedUrl.query
。
答案 3 :(得分:0)
var queryString = Object.keys(request.query).map(key => key + '=' + request.query[key]).join('&');
或
var queryString = require('querystring').stringify(request.query);
答案 4 :(得分:-1)
如果你希望它是那个“轻量级”,你必须自己写。
var raw = "";
for( key in query_string)
raw += key + "="+ query_string[key] "&";
if ( raw.indexOf("&") > 0) // To remove the last & since it will produce 'tt=gg&'
raw = raw.substring(0,raw.length-1);