Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js:将请求选项转换为最终URL_Javascript_Node.js_Http_Request - Fatal编程技术网

Javascript Node.js:将请求选项转换为最终URL

Javascript Node.js:将请求选项转换为最终URL,javascript,node.js,http,request,Javascript,Node.js,Http,Request,如果我使用的是Node.js,是否有一种方法可以自动将请求函数的一组选项转换为Node.js将用于其HTTP请求的最终URL 也就是说,如果我有一组像这样使用的选项 var http = require('http'); var options = { host: 'www.random.org', path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=ne

如果我使用的是Node.js,是否有一种方法可以自动将请求函数的一组选项转换为Node.js将用于其HTTP请求的最终URL

也就是说,如果我有一组像这样使用的选项

var http = require('http');

var options = {
  host: 'www.random.org',
  path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
};

callback = function(response) {
  var str = '';

  //another chunk of data has been received, so append it to `str`
  response.on('data', function (chunk) {
    str += chunk;
  });

  //the whole response has been received, so we just print it out here
  response.on('end', function () {
  conso
    console.log(str);
  });
}

const req = http.request(options, callback).end();
有没有办法让我改变

var options = {
  host: 'www.random.org',
  path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
};
入网

www.random.org/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new
我意识到对于上述情况,这将是一个微不足道的字符串连接

const url = 'htts://' + options.host + options.path

我感兴趣的是可以将任何选项对象转换为其最终URL的代码,一个请求有21个可能的选项。有些可能会影响最终的URL。有些人可能不会。我希望Node.js或NPM有一种内置的方式,可以将这些选项转换为URL,省去我自己繁琐的工作。

Node.js最初提供了
querystring
模块,该模块的功能似乎可以满足您的需要。例如,
stringify
函数:

querystring.stringify({foo:'bar',baz:['qux','qux'],corge:'});
//返回“foo=bar&baz=qux&baz=qux&corge=”
最近,在
url
模块中引入了
URLSearchParams
等对象,以更好地与WHATWG规范保持一致,从而与浏览器中可用的API更加内联:

const myURL=新URL('https://example.org/?abc=123');
log(myURL.searchParams.get('abc');
//印刷品123
myURL.searchParams.append('abc','xyz');
console.log(myURL.href);
//印刷品https://example.org/?abc=123&abc=xyz
您最终选择的方法取决于您的具体业务需求。

+1非常有用,谢谢。我对URL的querystring部分感兴趣,因此这些可能对我有用。但我也对URL中可以包含的用户名/密码、node将自动解析端口主机名的位置以及URL解析/构造中可能不明显的任何其他部分感兴趣。