2012-04-17 54 views
4

我試圖在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); 
}); 

我缺少的東西?試圖發送幾個不同的標題,但它沒有太大的區別

回答

3

刪除主機中的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); 
}); 
+0

真棒,非常感謝! – 2012-04-18 07:37:29

1

您可以使用谷歌的節點客戶端庫爲它的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 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 
     }); 
    });