Node.js和Google Pagespeed API

4

我正在尝试在Node中构建一个简单的Google Pagespeed客户端,但我在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);
});

我有点不明白?尝试发送了几个不同的头部信息,但是并没有什么太大区别。

3个回答

3

取消主机中的 https:// 前缀,这样您就可以开始了。请参阅此处的文档

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

var https = require('https'),
    key = '密钥',
    url = '网址',
    strategy = '桌面';
https.get({ host: 'www.googleapis.com', path: '/pagespeedonline/v1/runPagespeed?url=' + encodeURIComponent(url) + '&key='+key+'&strategy='+strategy }, function(res) { console.log("状态码:", res.statusCode); console.log("响应头:", res.headers);
res.on('data', function(d) { process.stdout.write(d); }); }).on('error', function(e) { console.error(e); });

1

您可以使用谷歌的 Node 客户端库来调用其 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);
  });
});

客户端库还支持批量请求,这在您的情况下可能非常有用。更多文档请参见https://github.com/google/google-api-nodejs-client

0

google-api-nodejs-client 是 Google 官方支持的用于访问 Google API 的 Node.js 客户端库。

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
        });
    });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接