まくまくNode.jsノート
request-promise モジュールを使用して HTTP 通信を行う
2018-11-27

request パッケージと request-promise パッケージ

request モジュールを使用して HTTP 通信を行う」の記事で説明しているように、request パッケージを使用すると、HTTP 通信による情報取得を簡単に行えます。 request パッケージの拡張版として、request-promise パッケージが提供されており、request パッケージの代わりに使用することで、ECMAScript 2015 のPromise、ECMAScript 2017 の async/await を使用したコーディングを行うことができます。

Promise や async/await の使い方に関しては下記の記事で説明していますが、簡単に言うと、従来のコールバックを使用したコーディングよりもわかりやすいコーディングが行えるようになります。

request-promise パッケージのインストール

request-promise パッケージは、npm install コマンドで簡単にインストールすることができます。 間接的に request パッケージに依存している (peed dependencies) ため、request パッケージも一緒にインストールしておく必要があります。

$ npm install request
$ npm install request-promise

ついでに package.jsondependencies エントリに追加したい場合は、次のように --save オプションを追加してインストールします。

$ npm install --save request
$ npm install --save request-promise

request-promise の基本的な使い方

request-promise による HTTP リクエストは、下記のように Promise.thenPromise.catch を使用してハンドルすることができます。

var rp = require('request-promise');

rp('https://www.yahoo.co.jp')
  .then(function (htmlString) {
    console.log(htmlString);
  })
  .catch(function (err) {
    console.error(err);
  });

さらに、ECMAScript 2017 の async/await を使用すると、同期的な記述を行うことができます。

var rp = require('request-promise');

async function getHtml(url) {
  try {
    let html = await rp(url);
    console.log(html)
  } catch (err) {
    console.error(err);
  }
}

getHtml('https://www.yahoo.co.jp');
2018-11-27