2015年11月24日火曜日

learnyounodeを解いてみる(7問目)

learnyounode [ HTTP CLIENT]


1つ目の引数として指定された URL に、 HTTP で GET を送信する (※)アプリを書いてください。 そのリクエストに対するレスポンスを"data"イベントで受け取り、受け取った全ての文字列を1つずつ改行で区切ってコンソールに書き出してください。


問題は少し説明が分かりにくいですが、ヒントを読むとhttpモジュールのgetを使ってurlから内容をそのまま読めば良いようです。ほぼヒントに書かれている通り書けば良いので問題はないでしょう。

http.get(options, [callback])

httpモジュールはNode入門書では大抵出てくるので何をしているかは理解できるでしょう。

使い方は http.get(url, callback) でいつもの通りコールバックを使用しますが、そのコールバック関数は function callback (response) { /* ... */ } と第一引数がエラーではありません。
response.on()で得られたデータを'data' でエラーを 'error' を取得します。

気をつけるのは得られたデータにresponse.setEncoding()でエンコーディングを適用することです。
まとめると以下のようになります。

get.js

var http = require('http');

var url = process.argv[2];

http.get(url, function(res) {
    res.setEncoding('utf8');
    res.on('data', function(chunk) {
      console.log(chunk);
    }).on('error', function(err) {
      console.error("Error: " + err.message);
    });
});


# おめでとう!

「HTTP クライアント」に対するあなたの回答は合格です!

これが正式な回答です(もしあなたの回答と比較してみたいならどうぞ):

──────────────────────────────────
    var http = require('http')
    
    http.get(process.argv[2], function (response) {
      response.setEncoding('utf8')
      response.on('data', console.log)
      response.on('error', console.error)
    })




0 件のコメント:

コメントを投稿