2015年09月28日
MTDataAPIDebugger で Data API v2 を理解する
Movable Type の Data API は Movable Type for iOS や MAUSといったアプリからの投稿や閲覧を意識して開発されたものととらえられがちですが、最近になって別の活用方法が見えてきましたのでご紹介します。
記事やページ、カスタムオブジェクトのエンドポイントを使って外部システムと連携する
これまで PowerCMS や Movable Typeを使った外部システムとの連携案件では外部システムにある商品マスタ、在庫データ、不動産物件システムのデータ等とCMSを連携するのに以下のような方法をとってくることが一般的でした。CMSは一般的にそれらのデータの表示や検索といった機能を担います。
- CSVインポート機能を使い、バッチで連携する
- DynamicMTML や JavaScript でダイレクトに外部システムのAPIをコールする
前者の方法は外部システム側のデータとCMS側がリアルタイムに連動しないという問題があります。後者の問題はどうしても表示側のパフォーマンスが問題になります。
そこで、第三の選択肢として、外部システムから新規作成、更新されたデータを Data API経由で同期してもらうことにより、リアルタイムな情報のアップデートが行なえつつ表示側のパフォーマンスも落とさないということが実現できます。
しかも Movable Type / PowerCMS の Data API は開発せずとも「そこにある」ため外部システムの開発会社へはドキュメントを渡すだけという手軽さです。ドキュメントは以下にあります。
Data APIを活用するのに欠かせない MTDataAPIDebugger
MTDataAPIDebugger はアルファサードが開発、提供している無償のソフトウェアで、Mac や Windows のデスクトップアプリケーションです。Mac版は Mac App Storeから、Windows版はアルファサードのサイトからダウンロードできます。
ひとまず下記のように設定します(ユーザーにはBlogID 1のウェブサイトへの記事投稿権限を付与しておいてください)。
ラベル | 入力内容 | 入力例 |
---|---|---|
CGIPath | CGIのパス | http://localhost/mt/ |
DataAPIScript | DataAPIのファイル名 | mt-data-api.cgi |
UserName | ログインアカウント | Melody |
Password | ログインパスワード | Nelson |
BlogID | ウェブサイトまたはブログのID | 1 |
API Version | Data APIのバージョン | v2 |
Request with Authentication | 認証付きリクエストを送る | チェック有り |
記事一覧を取得する
「Entries」ボタンをクリックすれば記事のリストを取得しますが、エンドポイントへの理解を深めるために GET ボタンをクリックして以下のように入力して記事の取得を試してみてください。
/sites/1/entries
MTDataAPIDebugger では、送信したリクエストや返って来たJSONをテキストエリアにログとして可視化してくれるため、開発者だけでなく、外部協力会社にドキュメントを渡す担当の方も簡単にデータの形を理解できると思います。
記事をポストする
こちらも「New Entry」ボタンクリックで入力インターフェイスが表示されるのですが、やはり理解を深めるために POST ボタンをクリックします。
/sites/1/entries
※1 はウェブサイトのID
entry={"title":"記事のタイトル","body":"記事の本文"}
これを実行してからMTの管理画面に行くと記事が投稿されていますね。
記事を更新する
続いて既存記事の更新です。MTDataAPIDebugger では PUTメソッドが送れませんが、Data APIでは __method=PUT パラメタを付けて POSTすることで更新が可能です。
/sites/1/entries/7
更新の場合は記事の ID をリクエストに付与します(この例では 7)。
__method=PUT&entry={"title":"更新記事のタイトル","body":"更新記事の本文"}
Data API v2で記事やページのメタ情報がポストできるようになった
v1でも記事の「タグ」や「カスタムフィールド」などは付けられましたが v2では「記事アイテム」や「カテゴリ」などの情報を持たせることができるようになりました。但し、「記事アイテム」や「カテゴリ」の渡し方に少し癖がありますのでご紹介します。
メタ情報の渡し方は下記の通りです。
データ名 | JSONの組み立て方 | 値の例 |
---|---|---|
カテゴリ | Category resourceの配列(idのみ渡せば良い) | [{"id":"1"},{"id":"2"}] |
記事アイテム | Asset resourceの配列(idのみ渡せば良い) | [{"id":"1"},{"id":"2"}] |
タグ | 文字列の配列 | "tags":["Movable Type","PowerCMS"] |
カスタムフィールド | ベースネームと値の配列 | "customFields":[{"basename":"entry_contact", "value":"junnama@alfasado.jp"}] |
これらを含んだリクエストの例は下記になります。MTDataAPIDebugger で POST をクリック
/sites/1/entries
※ idに該当するカテゴリ、アイテムが存在している必要があります。
entry={"title":"Data API v2 で記事とメタ情報をあわせてポストする","body":"Movable Type の Data API は Movable Type for iOS や MAUSといったアプリからの投稿や閲覧を意識して開発されたものととらえられがちですが、最近になって別の活用方法が見えてきましたのでご紹介します。","categories":[{"id":"2"},{"id":"3"}],"assets":[{"id":"1"}],"status":"Publish","tags":["Movable Type","PowerCMS"],"customFields":[{"basename":"entry_contact","value":"junnama@alfasado.jp"}]}
管理画面へ行き、画像のようにメタデータが付与されていることを確認できます。
- カテゴリー
- 技術情報
コメントを投稿する