Node.js http.request选项hostname参数的格式是什么?

时间:2017-03-19 16:56:02

标签: javascript node.js http https hostname

我正在尝试向Instagram API发出请求,我很难理解为什么http.request hostname参数来自选项。

然而,这是我的代码:

const http = require("http");
const https = require("https");

function requestInstagramData(){
    var options = {
      protocol: "https:",
      hostname: "https://api.instagram.com",
      path: "/v1/tags/fashion?access_token=3681332213.81b69f2.88020902f003411196c3f4423912f547",
      method: "GET"
    };
    var instaRequest = https.request(options);

     instaRequest.on("response", function(res){
      res.on("data", function(data){
        console.log("data has arrived");
      });

      console.log("response");
      console.log(res.statusCode);
      console.log(res.statusMessage);
    });

    instaRequest.end();

}
requestInstagramData();

此代码不起作用,但如果我将options对象中的主机名更改为

hostname: "api.instagram.com"

它正在发挥作用。

为什么?

2 个答案:

答案 0 :(得分:3)

  1. http.request是一个像任何其他函数一样的函数。要正确使用它,您需要知道它可以接受哪些输入,为此我们通常会检查文档。

  2. http.request(link)的文档说输入参数必须是由协议,主机名,路径等组成的对象。这些都是http url scheme的标准组件。您可以查看这篇文章(link),该文章非常清楚地解释了这些组件的命名方式。

  3. 牢记这两点。它并没有与" http://"因为那是协议,不应该包含在主机名中。

答案 1 :(得分:1)

正如您在尝试" api.instagram.com"时已经发现的那样, hostname 属性仅用于指定主机,并且根据定义,主机名不包括协议。该协议进入协议属性,就像您已经完成的那样。