詳説 Data API 2.0 Vol.3: さまざまな条件で記事を取得する
Movable Type で扱うメインコンテンツとなる記事については、Data API 1.0 でも 作成、更新、削除などひと通りの事が行えます。また、特定のサイトの記事を一覧するエンドポイントを用意していました。
Data API 2.0 では、1.0 よりも一覧の取得に関して機能を強化しています。詳説 Data API 2.0 第三回目は、記事に関するエンドポイントについて説明します。
指定したカテゴリに属する記事を一覧する
特定のカテゴリに属している記事の一覧を取得する事ができます。これにより、同じカテゴリの記事を表示することなどができます。
- エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/categories/:category_id/entries
- サンプル
// この記事のメインカテゴリに所属する他の記事一覧を取得する $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/categories/<mt:EntryPrimaryCategory><mt:CategoryID></mt:EntryPrimaryCategory>/entries?excludeIds=<mt:EntryID>", type: "GET", dataType: 'json' }) .done(function( data ) { console.log(data); });
指定したアイテムと関連付けられている記事を一覧する
特定のアイテムと関連付けされている記事の一覧を取得する事ができます。写真アイテムのリンク先として、記事を指定することなどができるようになります。アイテムのエンドポイントについては、先日公開した「詳説 Data API 2.0 Vol.2: 強化されたアイテム処理」も併せてご覧ください。
- エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/assets/:asset_id/entries
- サンプル
<div id="result"></div>
// アイテムの一覧をサムネイルで表示しつつ、記事のパーマリンクをリンク先にする $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets", type: "GET", dataType: 'json', }) .done(function( assets ) { if(assets.totalResults > 0) { $(assets.items).each(function() { var asset_id = this.id; var url = "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/" + asset_id + "/entries?limit=1"; $.ajax({ url: url, type: "GET", dataType: 'json' }) .done(function( entries ) { $.ajax({ url: "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/assets/" + asset_id + "/thumbnail?width=200&square=1", type: "GET", dataType: 'json' }) .done(function( thumb ) { if (entries.totalResults > 0) { $('#result').append('<a href="'+ entries.items[0].permalink + '"><img src="' + thumb.url + '" width="200"></a>'); } else { $('#result').append('<img src="' + thumb.url + '" width="200">'); } }); }); }); } });
指定したタグが付与されている記事を一覧する
特定のタグが付与されている記事の一覧を取得する事ができます。同じタグを持つ記事を関連記事として表示することなどができます。
- エンドポイント
GET http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/tags/:tag_id/entries
- サンプル
// 同じタグを持つ記事を関連記事として表示する <mt:EntryIfTagged> <div><ul id="result-<mt:EntryID>"></ul></div> <script> var tag_ids = <mt:EntryTags glue=","><mt:if name="__first__">[</mt:if><mt:TagID><mt:If name="__last__">]</mt:if></mt:EntryTags>; $(tag_ids).each(function(){ var tag_id = this; var url = "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/tags/" + tag_id + "/entries?limit=3&excludeIds=<mt:EntryID>&fields=title,permalink,excerpt,id"; $.ajax({ url: url, type: "GET", dataType: 'json' }) .done(function( entries ) { if(entries.totalResults > 0) { $(entries.items).each(function(){ $('#result-<mt:EntryID>').append('<li><a href="' + this.permalink + '" title="' + this.title + '"></a><p>' + this.excerpt + '</p></li>'); }); } }); }); </script> </mt:EntryIfTagged>
記事にカテゴリを割り当てる
記事の作成時、あるいは記事の更新時にカテゴリを設定する事が出来るようになりました。
- エンドポイント
POST http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/entries
- サンプル
var entry = { "body": "<p>いろはにほへと ちりぬるお</p><p>わかよたれそ つねならむ</p>", "title": "いろは歌", "categories": [ {id: 5}, // メインのカテゴリID {id: 6}, // サブのカテゴリID {id: 4} // サブのカテゴリID ] }; var token = "MTAuth accessToken=" + t; var url = "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/entries"; $.ajax({ url: url, type: "POST", dataType: 'json', data: { entry: JSON.stringify(entry) }, headers: { 'X-MT-Authorization': token } }) .done(function( data ) { console.log(data); });
記事にアイテムを割り当てる
記事の作成時、あるいは記事の更新時にアイテムを関連付けする事が出来るようになりました。
- エンドポイント
POST http(s)://path/to/mt-data-api.cgi/v2/sites/:site_id/entries
- サンプル
var entry = { "body": "<p>いろはにほへと ちりぬるお</p><p>わかよたれそ つねならむ</p>", "title": "いろは歌", "assets": [ {id: 5}, // アイテムID {id: 6}, // アイテムID {id: 4} // アイテムID ] }; var token = "MTAuth accessToken=" + t; var url = "http://path/to/mt-data-api.cgi/v2/sites/<mt:BlogID>/entries"; $.ajax({ url: url, type: "POST", dataType: 'json', data: { entry: JSON.stringify(entry) }, headers: { 'X-MT-Authorization': token } }) .done(function( data ) { console.log(data); });