Node.js和Google Pagespeed API

Node.js和Google Pagespeed API,node.js,curl,https,pagespeed,Node.js,Curl,Https,Pagespeed,我试图在Node中构建一个小的GooglePageSpeed客户端,但我正在努力使用https客户端。请求总是返回302响应,但完全相同的url在curl和浏览器中工作得非常好 options = { host: 'https://www.googleapis.com' , path: '/pagespeedonline/v1/runPagespeed?url=' + program.uri + '/&prettyprint=false&strategy=' +

我试图在Node中构建一个小的GooglePageSpeed客户端,但我正在努力使用https客户端。请求总是返回302响应,但完全相同的url在curl和浏览器中工作得非常好

options = {
    host: 'https://www.googleapis.com'
    , path: '/pagespeedonline/v1/runPagespeed?url=' + program.uri + '/&prettyprint=false&strategy=' + program.strategy + '&key=' + program.key
}

https.get(options, function(res) {
    console.log("statusCode: ", res.statusCode);
    console.log("headers: ", res.headers);
    res.on('data', function(d) {
        process.stdout.write(d);
    });
}).on('error', function(e) {
    console.error(e);
});

我错过什么了吗?尝试发送几个不同的头,但没有多大区别

在主机中删除
https://
前缀,您应该可以开始了。看

下面是一个工作示例,只需替换您自己的URL和API密钥:

var https = require('https'), key = 'KEY', url = 'URL', strategy = 'desktop'; https.get({ host: 'www.googleapis.com', path: '/pagespeedonline/v1/runPagespeed?url=' + encodeURIComponent(url) + '&key='+key+'&strategy='+strategy }, function(res) { console.log("statusCode: ", res.statusCode); console.log("headers: ", res.headers); res.on('data', function(d) { process.stdout.write(d); }); }).on('error', function(e) { console.error(e); }); var https=require('https'), key='key', url='url', 策略='桌面'; https.get({ 主持人:“www.googleapis.com”, 路径:'/pagespeedonline/v1/runPagespeed?url='+encodeURIComponent(url)+ “&key=”+key+“&strategy=”+strategy },功能(res){ console.log(“状态码:”,res.statusCode); 日志(“标题:”,res.headers); res.on('数据',功能(d){ 进程.stdout.write(d); }); }).on('error',函数(e){ 控制台错误(e); });
您可以将Google的节点客户端库用于其API

var googleapis = require('googleapis');
googleapis.load('pagespeedonline', 'v1', function(err, client) {
  // set your api key
  client = client.withApiKey('...');
  var params = { url: '...', strategy: '...' };
  var request = client.pagespeedonline.pagespeedapi.runpagespeed(params);
  request.execute(function (err, result) {
    console.log(err, result);
  });
});
客户端库还支持在您的情况下可能有用的批处理请求。进一步的文档是Google官方支持的node.js客户端库,用于访问Google API

npm install googleapis
对于PageSpeed Insights API,它现在是这样的:

require('googleapis')
    .discover('pagespeedonline', 'v1')
    .execute(function (err, psclient) {
        var params = { url: URLHERE }; // others params https://developers.google.com/speed/docs/insights/v1/getting_started
        var request = psclient.pagespeedonline.pagespeedapi.runpagespeed(params).withApiKey(YOUR_API_KEY);;
        request.execute(function (err, result) {
            //do something
        });
    });