2

我正在本地尝试通过获取请求获取用户存储库httpshttps.get

const https = require("https")

https.get({
    url: "https://api.github.com/users/ryanve/repos"
  }, response => {
    let data = ""
    response
      .on("data", chunk => data += chunk)
      .on("end", () => {
        console.log(data)
      })
  })
  .on("error", e => {
    console.error(e.message)
  })

我收到一个ECONNREFUSED错误

connect ECONNREFUSED 127.0.0.1:443

是什么导致了这个错误?

验证?

我该如何解决?

node --versionv12.16.2

4

2 回答 2

1

您不能包含url在传递给的对象中get。由于这就是您传递的全部内容并且被忽略,因此它使用了 localhost 的默认 URL。(IMO,有一个默认的 URL 而不仅仅是抛出一个错误说一个 URL 丢失是 NodeJS 中的一个缺陷,但这既不是这里也不是那里。)替换这个:

https.get({
    url: "https://api.github.com/users/ryanve/repos"
  }

有了这个:

https.get("https://api.github.com/users/ryanve/repos"
于 2020-04-22T04:52:44.397 回答
1

使其工作的步骤

  1. 更正了url语法。谢谢!
  2. 得到请确保您的请求有 User-Agent 标头错误
  3. 经测试curl适用于同一端点
  4. 学会了User-Agent寄信options.headers

在职的curl

curl -iH User-Agent:ryanve https://api.github.com/users/ryanve/repos

在职的https.get

https.get("https://api.github.com/users/ryanve/repos", {
    headers: {
      "User-Agent": "ryanve"
    }
  }, response => {
    let data = ""
    response
      .on("data", chunk => data += chunk)
      .on("end", () => {
        console.log(JSON.parse(data, null, 2))
      })
  })
  .on("error", e => {
    console.error(e.message)
  })
于 2020-04-22T05:44:48.553 回答