访问GET响应正文参数

时间:2016-09-28 10:32:13

标签: node.js http http-get

我正在使用request包向npm API发出简单的HTTP GET请求。我试图从我的nodeJS后端的任意函数获取npm包的下载计数。

这是我的 updateDownloadCount.ts 文件:

export function updateDownloads() {
    plugin.find(function (err, plugins: Array<any>) {
        for (let plugin of plugins) {
            var url = 'https://api.npmjs.org/downloads/point/last-month/' + plugin.package;

            request(url, function (error, response, body) {
                if (!error && response.statusCode == 200) {
                    console.log(body)
                }
            })
        }
    })
}

这样很好,我得到一串输出,如:

{"downloads":17627637,"start":"2016-08-29","end":"2016-09-27","package":"request"}

然而,当我尝试仅访问downloads计数时,即

console.log(body.downloads);

我记录了undefined控制台...如何访问正文变量?我觉得这应该是非常简单的,但我无法在其上找到任何文档。

1 个答案:

答案 0 :(得分:1)

如果是string type

,请尝试解析正文
export function updateDownloads() {
  plugin.find(function(err, plugins: Array < any > ) {
    for (let plugin of plugins) {
      var url = 'https://api.npmjs.org/downloads/point/last-month/' + plugin.package;

      request(url, function(error, response, body) {
        if (!error && response.statusCode == 200) {
          if (body && typeof body == "string") {
            body = JSON.parse(body);
          }
          console.log(body.downloads);
        }
      })
    }
  })
}