2014-10-01 151 views
0

У меня уже есть объект запроса. Теперь все, что мне нужно сделать, это изменить хост и снова выполнить запрос http.
типа // URL: www.something.com/a/b?w=2 & е = 2
как передать объект строки запроса в http.request в nodejs

fun(req,res){ 

options = { 
    host : <newhost> 
    method : req.method 
    path : req.path 
    headers : req.headers 
    } 
    http.request(options,...) 
} 

Теперь, как я отправить строку запроса (ш = 2 & е = 2), в этом вариант.
Я могу сделать это с помощью модуля запроса (в nodejs), но это следует за перенаправлением (HTTP 302).

Спасибо,
Шантану

+1

Вы можете сказать, запрос не следовать редиректов. 'followRedirect: false' – josh3736

+0

, который сработал. Это много. Возможно, вы опубликуете это как ответ. – shantanu

ответ

2

http может сделать это, а также

var queryString = 'w=2&e=2'; 
options = { 
    host : <newhost> 
    method : req.method 
    path : req.path + '?' + queryString // say, var queryString = 'w=2&e=2' 
    headers : req.headers 
    } 
    http.request(options,...) 
1

Лучшим способом это stringify объекта с модулем узлов строки запроса. Таким образом вы можете передать объект опций пользовательской функции queryBuilder и повторно использовать его для нескольких запросов с различными значениями. Вот пример.

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

    var options = { 
     host : 'www.host.com', 
     path : '' 
    } 

    var queryBuilder = function (object, callback) { 
     callback(querysring.stringify(object)); 
    }; 

    queryBuilder({ w: '2', e: '2' }, callback(data){ 
     options.path = data; 
     http.request(options, function (req, res) { 
      //do something with the response 
     }).end(); 
    }); 

это установит путь, равный w=2&e=2

Смежные вопросы