4

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

私は何かが足りないのですか?いくつかの異なるヘッダーを送信しようとしましたが、あまり違いはありませんでした

4

3 に答える 3

3

ホストにプレフィックスをドロップすると、https://準備が整います。こちらのドキュメントをご覧ください。

これが実際の例です。独自のURLとAPIキーを置き換えるだけです。

var https = require('https')、
    キー='キー'、
    url ='URL'、
    戦略='デスクトップ';

https.get({
    ホスト:'www.googleapis.com'、
    パス:'/ 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);
});
于 2012-04-17T17:18:30.523 に答える
1

APIにはGoogleのノードクライアントライブラリを使用できます。

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です

于 2013-03-09T20:13:20.153 に答える
0

google-api-nodejs-clientは、GoogleAPIにアクセスするためにGoogleが公式にサポートしている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
        });
    });
于 2013-08-13T10:14:27.280 に答える