2012-04-17 11 views
4

Nodeで少しのGoogle Pagespeedクライアントを構築しようとしていますが、私はhttpsクライアントに苦労しています。要求は常に302の返信で返されますが、まったく同じURLがカールやブラウザで完全に機能します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を参照してください。あなたは、そのAPIのGoogleのノードクライアントライブラリを使用することができます

 
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

素晴らしい、おかげでそんなに! –

1

はここだけ、あなた自身のURLと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にアクセスするためのGoogleの正式にサポートされているnode.jsクライアントライブラリです。

npm install googleapis 
PageSpeed Insightsの評価によるAPIについては

、それは次のようにsomehtingです:

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