PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > 技術情報 > MTDataAPIDebugger で Data API v2 を理解する

2015年09月28日

MTDataAPIDebugger で Data API v2 を理解する

Movable Type の Data API は Movable Type for iOSMAUSといったアプリからの投稿や閲覧を意識して開発されたものととらえられがちですが、最近になって別の活用方法が見えてきましたのでご紹介します。

記事やページ、カスタムオブジェクトのエンドポイントを使って外部システムと連携する

これまで PowerCMS や Movable Typeを使った外部システムとの連携案件では外部システムにある商品マスタ、在庫データ、不動産物件システムのデータ等とCMSを連携するのに以下のような方法をとってくることが一般的でした。CMSは一般的にそれらのデータの表示や検索といった機能を担います。

  • CSVインポート機能を使い、バッチで連携する
  • DynamicMTML や JavaScript でダイレクトに外部システムのAPIをコールする

前者の方法は外部システム側のデータとCMS側がリアルタイムに連動しないという問題があります。後者の問題はどうしても表示側のパフォーマンスが問題になります。

そこで、第三の選択肢として、外部システムから新規作成、更新されたデータを Data API経由で同期してもらうことにより、リアルタイムな情報のアップデートが行なえつつ表示側のパフォーマンスも落とさないということが実現できます。

しかも Movable Type / PowerCMS の Data API は開発せずとも「そこにある」ため外部システムの開発会社へはドキュメントを渡すだけという手軽さです。ドキュメントは以下にあります。

Data APIを活用するのに欠かせない MTDataAPIDebugger

MTDataAPIDebugger

MTDataAPIDebugger はアルファサードが開発、提供している無償のソフトウェアで、Mac や Windows のデスクトップアプリケーションです。Mac版は Mac App Storeから、Windows版はアルファサードのサイトからダウンロードできます。

MTDataAPIDebuggerのスクリーンショット

ひとまず下記のように設定します(ユーザーにはBlogID 1のウェブサイトへの記事投稿権限を付与しておいてください)。

ラベル入力内容入力例
CGIPathCGIのパスhttp://localhost/mt/
DataAPIScriptDataAPIのファイル名mt-data-api.cgi
UserNameログインアカウントMelody
PasswordログインパスワードNelson
BlogIDウェブサイトまたはブログのID1
API VersionData 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"}]}

管理画面へ行き、画像のようにメタデータが付与されていることを確認できます。

記事のメタ情報が付与されている


カテゴリー
技術情報

Recent Entries