「WordPressで学ぶPHP(4)通信編」を発売しました。
本書は、「WordPressで学ぶPHP(1)変数・制御構造編」「WordPressで学ぶPHP(2)データ構造編」「WordPressで学ぶPHP(3)関数編」の続編にあたり、Webブラウザとサーバー(PHP)との通信と、PHPから他のサーバーに通信することについて解説します。
Data APIを使ってみる(その1)
昨日の記事で述べたように、Movable Type 6のキーとなる機能は、Data APIだと思います。
そこで、Data APIの使い方を紹介していきます。
1.Data APIの概要
これまでのMovable Typeでは、記事等のデータは、管理画面で操作したり、テンプレートタグでHTMLに出力したりして、基本的にはMovable Typeのシステムの中だけで使うものでした。
Movable Type以外のシステムからデータを利用するには、データベースを直接アクセスしたり、データをJSON等で出力するテンプレートを書いたり、あるいはデータアクセス用のプラグインを作るといった作業が必要でした。
しかし、スマートフォンアプリを作ったり、サイトをWebサービス化したいときなど、Movable Typeの外からデータにアクセスしたい場面が増えています。
このために作られたのが、Data APIです。
Data APIでは、RESTでMovable Typeに問合せをし、結果をJSONで得ることができます。
ログインせずにパブリックなデータだけを得ることや、ログインしてプライベートなデータにアクセスすることができます。
また、プライベートなアクセスでは、データの追加/編集/削除も可能です。
各種のプログラム言語から、RESTでMovable Typeのデータにアクセスすることができます。
特に、JavaScript SDKを利用すれば、JavaScriptaでより分かりやすくプログラムを作ることもできます。
2.JavaScript SDKを使った例
JavaScript SDKを使った簡単な例として、IDが1番のブログから最新記事を取得して、タイトルと概要を表示する例を紹介します。
テンプレートエンジンのHogan.jsと組み合わせてみました。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>test</title> </head> <body> <div id="tmpl" style="display: none"> <ul id="entries"> {{#entries}} <li> <a href="{{permalink}}">{{title}}</a><br /> {{excerpt}} </li> {{/entries}} </ul> </div> <div id="result"></div> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script src="/mt6b/mt-static/data-api/v1/js/mt-data-api.js"></script> <script src="http://twitter.github.com/hogan.js/builds/2.0.0/hogan-2.0.0.js"></script> <script type="text/javascript"> var tmpl = Hogan.compile(jQuery('#tmpl').html()); var api = new MT.DataAPI({ baseUrl: "http://yourdomain.com/path_to_mt/mt-data-api.cgi", clientId: 'example' }); jQuery('#result').html('Please wait...'); api.listEntries(1, function(response){ jQuery('#result').html('').append( tmpl.render({ entries: response.items }) ); }); </script> </body> </html>
24~27行目は、DataAPIのオブジェクトを生成する処理です。
25行目の「yourdomain.com/path_to_mt」の部分は、Movable Type 6のインストール先に応じて変えます。
また、26行目の「example」は特に何でも良いようです。
29行目の「api.listEntries(1, function(response) {・・・」が、IDが1番のブログから記事を読み込む処理です。
記事が読み込まれると、2つ目のパラメータで指定した関数が実行され、そのパラメータのresponseに、読み込まれた記事が渡されます。
後は、responseを元にして、必要な処理を行います。
この例では、Hogan.jsのテンプレートにresponseのデータを渡し、レンダリングして、結果をdiv#resultに出力しています(30~32行目)。
この例では、Movable Typeのテンプレートは全く使っていません。
また、SQLでデータベースに直接アクセスするようなこともしていません。
にもかかわらず、HTMLとJavaScriptだけで、Movable Typeのデータにアクセスすることができています。
この例はごくシンプルなものですが、この例のような考え方を延長して、JavaScriptとMovable Typeを連携した各種のアプリケーションを作ることができます。