我正在尝试使用节点请求模块从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数据?
答案 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请求