コース: Node.jsとExpress.jsをマスターしよう

HTTPでのデータの取得

このレッスンでは node.js の HTTPクライアント機能を 利用する方法について説明します それでは ワークショッパーを起動しましょう learnyounode Enter 今回は 上から7番目の HTTP CLIENT という問題を解きます Enter を押しましょう 問題 コマンドライン引数の 1つめのパラメータで与えられた URLに対して HTTPの GETリクエストを行ったうえで そのレスポンスの "data"イベントに 付随するデータを 文字列として コンソールに出力する プログラムを書いてください HTTPというのは まあ みなさんがブラウザで ブラウジングをするときに 普段よく利用されている プロトコルですね このHTTPの get メソッド というのを使うことによって ウェブサーバー上から 情報を取得することができます これを Node でやってみましょう では Node の インタープリターを起動します node Enter そしてHTTPを使用するためには HTTPモジュールを ロードします require('HTTP') そしてHTTPモジュールの get という...名前そのままですが このメソッドを 使用することによって http.get で 通信を おこなうことが できます get の1番目のパラメータは URLです たとえば http://example.com というURLを入れて 2番目には 結果を受け取るための コールバック関数を渡します function の response このコールバックは レスポンスという サーバーが返してきた情報が 詰まったオブジェクトを 渡してくれます そして コールバックの中で このレスポンス自体は デフォルトでは バッファオブジェクトを返します 今回の場合は その サーバーから 受け取った情報を 文字列として テキストデータとして 扱いたいので そのためには レスポンスの setEncoding ここで文字コードを指定します utf-8 ですね こうすることによって レスポンスのデータを 自動的に 文字列に変換してくれます そしてデータを受け取る方法も 色々あるのですが 今回は response の 'data' イベントを使用しましょう データイベントの ハンドラに setEncode をしたので 文字列が入っているはずです そして そこで console.log に その文字列を そのまま出力してみましょう ちなみに このオンというのは Node の イベントというデータ型に 実装されているメソッドです このメソッドを使用することによって 色々なオブジェクトの上で 発生するイベントを 捕捉することができます 今回は データが到達したことを 知らせるイベントを捕捉するので データ という イベントを使用しています イベントの種類には そのほかにも 様々なものがあります そして次に GETのコールバックの関数を 定義終了して GETの呼び出しを 完了します すると このように GETリクエストで返された HTMLが 表示されました このような感じになっています では ヒントはここまでです 皆さん ここで いったん動画を止めて 問題を皆さんで 解いてみてください さて それでは皆さん 問題は解けましたでしょうか ほとんどヒントの部分で 答えのようなものに なっていましたが 私の方でこれから 正解のプログラムを 書いてみます program.js という ソースコードを 編集開始します そしてまずは HTTP モジュールのロードです require (’http') そして http の get メソッドを使用して ロードするURLは コマンドの引数で 与えられます argv 配列の2 そして コールバックを渡します コールバックのパラメータとしては レスポンスオブジェクトが 渡されます レスポンスオブジェクトに対して setEncoding で そのレスポンスボディの 文字コードを指定してやります utf-8 ですね こうすると レスポンスから返された データが utf-8 エンコーディングされた 文字列として 解釈されます そして データを受けとるために データイベントを 使用します データイベントは ストリングを返してくれますので これをそのまま コンソールに出力 これで答え合わせを してみましょう learnyounode verify program このように 正解できたようです また この 模範解答を見ると レスポンスの エラーイベントに対して エラーイベントが起きたときは コンソールに エラーを出力していますね これはすごくいいですね エラーが起きたときに ユーザーがこれでわかると思いますので それから オンイベントの ハンドラとして 今回 ただ単に渡されたものを そのまま console.log に 出力するだけなので console.log を このようにそのまま渡してやる という呼び出し方もありです このレッスンでは node.js で HTTPクライアント機能を 利用する方法について 説明しました

目次