如何在nodejs中的http.request中传递查询字符串对象

时间:2014-10-01 22:31:04

标签: node.js

我已经有了一个请求对象。现在我所要做的就是更改主机并再次发出http请求 //网址类型:www.something.com/a/b?w = 2& e = 2

fun(req,res){

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

现在如何在此选项中发送查询字符串(w = 2&amp; e = 2) 我可以使用请求模块(在nodejs中),但也在重定向(HTTP 302)之后。

谢谢,
山塔努

2 个答案:

答案 0 :(得分: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 :(得分:2)

更好的方法是使用节点querystring模块对对象进行字符串化。这样,您可以将选项对象传递给自定义queryBuilder函数,并将其重用于多个不同值的请求。这是一个基本的例子。

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

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

    var queryBuilder = function (object, callback) {
        callback(querystring.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