【问题标题】:nodejs's http.get by providing URInodejs http.get 通过提供 URI
【发布时间】:2012-03-19 22:49:50
【问题描述】:

我一直在阅读 http API,但我找不到通过提供我想要访问的 URI 来执行 http.get() 的方法。

例如,我从客户端收到一个复杂的 URI,比如 http://a.b.c:1234/d/e,我想向它发出 GET 请求。问题是,如果我必须设置http.get() 方法的options 参数,我最终会遇到复杂的字符串解析来解析host、port 和path。此外,例如,我什至不确定是否会始终提供端口。有没有办法通过提供完整的 URI 来创建 http.get()?

谢谢!

【问题讨论】:

    标签: node.js


    【解决方案1】:

    您可以使用url 库来执行此操作。

    var parse = require('url').parse;
    http.get(parse(myurl));
    

    会起作用,因为解析后的 url 对象的属性与http.get 预期的选项相同。这不是 hack,如果您查看文档,它会说这两个库旨在像这样相互补充。

    【讨论】:

    • 谢谢!所以要设置method、headers 等,我要做的就是例如var options = parse(myurl); options.method = 'GET';,对吧?
    • 是的,这很酷。对于任何需要这个的人:然后我在使用 options 变量时遇到了一些问题。我的建议是组成一个新变量,然后将parse(myurl) 结果中的hostname 传递为host,然后传递port 和path,当然如果您需要添加headers,您也需要该条目.
    【解决方案2】:

    使用url.parse:

    var url = require('url');
    var http = require('http');
    
    function download(uri, cb) {
       http.get(url.parse(uri), cb);
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-24
      • 2013-12-03
      • 2018-04-01
      • 2021-02-04
      • 1970-01-01
      • 2018-06-27
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多