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は、最初とっつきにくかったけど、やってみたら意外といけた。