「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
Data APIを使ってみる(その2)
Data APIは、JavaScriptに限らず、様々な言語から利用することができます。
今回は、Node.jsを使って、Data APIで情報を読み込み、それをクライアントに出力する例を紹介します。
Data APIにアクセスできる言語
Data APIは、RESTでMovable Typeにアクセスし、JSON形式でデータを受け取る仕組みです。
したがって、REST(HTTPのGETやPOSTなど)での通信と、JSONのパースに対応した言語であれば、どのような言語でもData APIにアクセスすることができます。
Node.jsも、標準で上記の処理に対応しています。
Expressで作ったサンプル
Expressを使って、インデックスページにアクセスされたときに、IDが1番のブログから、最新記事を読み込んで表示する例を作ってみました。
以下の手順で実行することができます。
アプリケーションの作成
以下のコマンドを実行して、「apitest」というアプリケーションを作ります。
express apitest cd apitest npm install
routes/index.jsを書き換える
routesディレクトリにあるindex.jsを、以下のように書き換えます。
var http = require('http'); var url = 'http://your_host/path_to_mt/mt-data-api.cgi/v1/sites/1/entries'; exports.index = function(req, res){ var http_req = http.get(url, function(http_res) { var data = ''; http_res.setEncoding('utf8'); http_res.on('data', function(str) { // get data data += str; }); http_res.on('end', function() { // parse json var json = JSON.parse(data); // out res.render('index', { entries: json.items }); }) }); };
リストの内容は以下の通りです。
- 1行目
httpモジュールを読み込みます。 - 2行目
接続先のData APIのアドレスを変数urlに代入します。
「your_host」と「path_to_mt」は、ご自分の環境に合わせて書き換えてください。 - 5行目
Data APIに接続して、コールバック関数で結果を処理します。 - 7行目
受信するデータのエンコーディングをUTF-8に設定します。 - 8~11行目
データを受信するたびに、変数dataに連結していきます。 - 12~17行目
データの受信が終わったら、JSONをパースして(14行目)、その結果に基づいてページをレンダリングします(16行目)。
JSONのitems(記事の配列)を、「entries」という変数名でテンプレートに渡します。
テンプレートを書き換える
次に、インデックスページのテンプレートを書き換えます。
ここでは、テンプレートをjadeで書いてみました。
viewsディレクトリにあるindex.jadeファイルを、以下のように書き換えます。
extends layout block content h1 Entries ul - for entry in entries li a(href=entry.permalink)=entry.title
index.jsで、テンプレートに「entries」という変数(=記事の配列)を渡しました。
その配列から記事を1件ずつ読み込み、タイトルとPermalinkを出力します。