読者です 読者をやめる 読者になる 読者になる

外部のAPIを叩いてみる

expressでクエリパラメータを取得して表示するところまでやったので、外部のAPIを叩いて、取得したデータを表示してみる。
APIはとりあえずatndのAPIにした。
https://github.com/chris4403/nodejs-sample/commit/d2172cac3d25d02f9df0d6e6e22726fdbd3088f1

app.js

// atnd events api
app.get('/events', function(req, res){

  var http = require('http');
  var options = {
      host : 'api.atnd.org',
      port : 80,
      path : '/events/?format=json',
  };
  var result = {};
  http.get(options, function(response) {
    response.setEncoding('utf8');
    var json = "";
    response.on('data',function(d) {
        json += d;
    }).on('end',function() {
        result = JSON.parse(json);
        res.render('events', {
          title: 'atnd event results',
          total_events : result.results_available,
          events : result.events
        });
    });
  }).on('error',function(e) {
      console.log(e);
  });

});

httpでgetしたあと、responseのdata eventで取得したデータを end eventの時点でJSONにパースしているけど、やり方がこれで良いのかよくわかってない。

events.jade

h1= title
p #{title}
ul#events
  each event in events
    li 
      a(href='/event?event_id=' + event.event_id, target='_blank') #{event.title}

テンプレートでは、eachで配列を処理するところを覚えた。
hamlは、最初とっつきにくかったけど、やってみたら意外といけた。