如何使用Node获取Youtube Data API数据

时间:2015-08-22 22:46:16

标签: json node.js api youtube request

我正在尝试使用节点请求模块从Youtube Data API获得响应。我可以使用JQuery获得我想要的响应,但是无法获得我可以通过节点理解的任何数据。

var request=require('request').defaults({ encoding: null });
var ACCESS_TOKEN='*******************';

request.get('https://www.googleapis.com/youtube/v3/search?part=snippet&q=ambient&type=video&key='+ACCESS_TOKEN,function(err,header,body){
    if (err) throw err
    console.log(body);
})

当我登录主机时,它的类型是'缓冲区' (不熟悉缓冲区)

如何获取json数据?

2 个答案:

答案 0 :(得分:0)

如果删除.defaults({ encoding: null }),则应获取json数据。

var request = require('request');
var ACCESS_TOKEN = '*******************';

request.get('https://www.googleapis.com/youtube/v3/search?part=snippet&q=ambient&type=video&key=' + ACCESS_TOKEN, function(err, header, body) {
  if (err) throw err
  console.log(body);
});

通过将编码设置为null,您告诉它将其作为Buffer返回。

  

encoding - 要在响应数据的setEncoding上使用的编码。 如果为null,则将主体作为缓冲区返回。其他任何东西(包括默认值undefined)将作为encoding参数传递给toString()(默认情况下这实际上是utf8)。 (注意:如果您需要二进制数据,则应设置encoding:null。)

https://www.npmjs.com/package/request#request-options-callback

答案 1 :(得分:0)

因为版本2.88.2请求程序包已被弃用:自2020年2月11日起,请求已完全弃用。预计不会有新的变化。实际上,有一段时间没有人降落了。

有关为何弃用请求以及可能的替代方法的更多信息,请参见request npm

我更改为axios npm,并且在服务器端与NodeJS一起正常工作。 示例:

axios.get('https://www.some.url').then(response => {
    console.log('> response:', response);
}).catch(error => {
    console.log(error);
});

或者有一些不同的方法可以从this link

在Node.js中发出HTTP请求