こんにちは、ライターのマサトです。今回は、Node.jsのrequestモジュールを使ったHTTP通信について学習をしていきましょう!
この記事では、
- requestモジュールとは?
- requestモジュールの使い方
- requestでJSONを扱う方法
- request-promiseによる通信方法
というように、基本的な内容から応用的な使い方に関しても解説していきます。この記事で、requestモジュールをしっかり学習して自分のスキルアップを目指しましょう!
requestモジュールとは?
まずは、requestモジュールについて基本的な知識から身に付けていきましょう!
requestモジュールを使うと、標準のhttpモジュールを使うよりも簡単で理解しやすい記述でHTTP通信を行うことができます。一般的にはcreateServer()メソッドを使って記述しますが、requestを使うとオプションを設定するだけで簡潔に書けるのが特徴です。
また、Promiseに対応したrequestモジュールも公開されているので本記事で合わせてご紹介しますので、ぜひ参考にしてみてください!
requestモジュールの使い方
この章では、requestモジュールの基本的な使い方について見ていきましょう!一般的な構文から実際のプログラミング手法について学んでいきます。
基本的な構文と書き方について
まずは、もっとも基本となる書き方について見ていきたいのですが、最初にrequire()でモジュールが使えるようにしておきましょう!
var request = require('request');
requestモジュールの特徴として、さまざなオプション設定を記述するだけで簡単に利用できるという点があります。
var options = { url: アクセスする先のアドレス, method: 通信の種類 ・ ・ ・ }
この例では、通信する先のアドレスと種類(GET / POSTなど)を記述しています。もちろん他にもヘッダー情報やPOSTする時のデータなど、さまざまなオプションを付与することが可能です。あとは、request()メソッドを以下のように実行するだけで完了です!
request(options, function (error, response, body) { })
第1引数の「options」には先ほど作成したオプションが設定でき、コールバック関数に実行したい処理を記述します。一般的なhttpモジュールでcreateServer()メソッドを使うよりも、かなりシンプルに記述できるのが分かりますね。
GET・POST通信を行う方法
今度は、一般的によく使う「GET / POST」通信をプログラミングしてみましょう!例えば、当ブログにGET通信するには次のように記述します。
var options = { url: 'https://www.sejuku.net/blog/', method: 'GET' } request(options, function (error, response, body) { console.log(body); })
この例では、当ブログのアドレスと通信の種類を示すGETをオプションに設定しています。そして、request()にオプションを指定してコールバック関数の「body」を出力することで当ブログのHTMLを出力しているわけです。
また、POST通信もほとんど同じように利用することが可能です!
var options = { url: 'https://www.sejuku.net/blog/sample', method: 'POST', form: {"name":"太郎"} } request(options, function (error, response, body) { console.log(body); })
この例では、通信の種類を「POST」に変更して新しく「form」プロパティを追加しています。これを追加することで、POST通信で一緒に送信するデータを指定できるので覚えておきましょう!
requestでJSONを扱う方法
requestモジュールを使うとJSONデータも効率的に扱えるので、合わせてご紹介しておきます!
例えば、アクセス先のサーバーからJSONファイルを取得したいとします。普通に記述すると以下のようになりますね。
var options = { url: https://www.sejuku.net/blog/sample.json', method: 'GET' }
これでもrequest()メソッドを使ってJSONデータを取得できるのですが、文字列データなのでJSONにパースする必要があります。
そこで、オプション設定に「json」プロパティを追加してみましょう!
var options = { url: https://www.sejuku.net/blog/sample.json', method: 'GET', json: true }
「json」をtrueにするだけで、自動的に取得したJSONデータをパースしてJavaScriptで扱いやすい形式にしてくれるわけです。
request-promiseによる通信方法
requestモジュールには、非同期処理を効率よく記述できるPromiseに対応したバージョンもあるのでご紹介しておきます。まずは、require()でモジュールが使えるように準備しておきましょう!
var request = require('request-promise');
基本的にはrequestモジュールがベースになっているので、使い方自体はほとんど同じように扱えます。例えば、以下のようにオプションを作成します。
var options = { url: https://www.sejuku.net/blog', method: 'GET' }
そして、オプションを指定してGET通信処理を次のように記述します。
request(options) .then(function (body) { console.log(body); }) .catch(function (err) { console.log(err); });
Promiseが扱えるので、「then」「catch」を使って簡潔に処理が記述できるのが分かりますね。ちなみにですが、Promiseについてまだよく分からないという方は次の記事で基本から体系的に解説しているので参考にしてみてください!
まとめ
今回は、簡単にHTTP通信が記述できるrequestモジュールについて学習しました。最後に、もう一度ポイントをおさらいしておきましょう!
- requestモジュールはオプションを設定することで簡単に処理を記述できる
- JSONデータを扱う際も自動的にパース処理をしてくれる
- Promise処理に対応したバージョンも存在する
上記内容を踏まえて、ぜひ自分でもプログラミングに取り入れて活用できるように頑張りましょう!