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 件のコメント:

コメントを投稿

Pythonで地図空間データを扱う⑤

ベースの地図が出来た所で、他のデータを被せてみます。 国土地理院の  500mメッシュ別将来推計人口データ  を使用します。 同じく神奈川県のデータ  500m_mesh_suikei_2018_shape_14.zip をダウンロードします。 ベースの地図データと同じ場所に展開...