Node.js和Google Pagespeed API
问题描述:
我试图在Node中构建一个Google Pagespeed客户端,但我正在与https客户端苦苦挣扎。请求总是以302响应返回,但完全相同的网址完全在卷曲和浏览器Node.js和Google Pagespeed API
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://
前缀,你应该很好去。请参阅docs here。
这里的工作的例子,刚刚替补自己的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); });
答
您可以使用谷歌的节点客户端库为它的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
答
google-api-nodejs-client是谷歌正式支持的用于访问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
});
});
真棒,非常感谢! – 2012-04-18 07:37:29