拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
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を連携した各種のアプリケーションを作ることができます。
