Подтвердить что ты не робот

Как получить строку unparsed запроса из http-запроса в Express

Я могу использовать ниже, чтобы получить строку запроса.

  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' }
4b9b3361

Ответ 1

Вы можете использовать node URL в соответствии с this пример:

require('url').parse(request.url).query

например.

node> require('url').parse('?tt=gg').query
'tt=gg'

Или просто перейдите прямо к URL и substr после ?

var i = request.url.indexOf('?');
var query = request.url.substr(i+1);

(это то, что require('url').parse() делает под капотом)

Ответ 2

Вы можете использовать req.originalUrl в express 3.x+. (Более старые версии могут использовать req.url из node http module.) Это должно произвести необработанную строку, исключая ?:

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'

Ответ 3

Если вы хотите, чтобы это было "легким", вам нужно написать его самостоятельно.

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