JSON API
概要
JSON APIへは、http://www.illustbook.net/api_クラス名?method=関数名&引数、でアクセスします。返り値はJSONオブジェクトです。外部サーバからアクセスする場合は、通常のgetメソッドで問題ありませんが、ローカルのJavaScriptからアクセスされる場合、クロスドメイン制約を回避する必要があります。そこで、APIアクセスの引数の最後に、callback=関数名、を追加することでJSONPでアクセスすることができます。
 
イラストブックのJavaScript APIでは、ネットワークアクセスAPIが提供されており、同じドメインの場合は通常のget、それ以外の場合はJSONPを自動的に選択して、JSON APIにアクセスしています。JavaScript APIを使用してJSON APIにアクセスする例を、次に示します。
function test_jsonp(){
user_id=illustbook.user.getCurrentUser()
var api_url="http://www.illustbook.net/api_user"
illustbook.request.get(api_url+"?method=getProfile&user_id="+user_id,test_callback)
}
function test_callback(oj){
alert(oj.response.name);
}
 
この例ではapi_userにアクセスしていますが、get関数が自動的に、http://www.illustbook.net/api_user?method=getProfile&user_id=xxx&callback=my_callback、という形式に変換してscriptタグを動的に生成して、処理結果をmy_callbackに通知します。
 
コールバックには次のプロパティを持つオブジェクトが通知されます。通知されるオブジェクトは、JavaScript APIとJSON APIで共通です。
| プロパティ | 返値 | 返値の詳細 |
| status | APIアクセス結果が返ります | "success":APIアクセスに成功した "overcapacity":帯域制限された "nodata":保存されているデータが存在しない "failed":APIアクセスに失敗した |
| message | statusが"success"以外の場合に、エラーの詳細が返ります | UTF8の日本語文字列、statusが"success"の場合は空文字列 |
| response | APIアクセスの処理結果 | APIに応じたオブジェクトもしくはオブジェクトのリスト |
 
 
 
クラスとオブジェクト一覧
>クラス一覧
| クラス | 役割 |
| feed | フィードを取得 |
| user | ユーザ情報を取得 |
| bookmark | ブックマーク情報を取得 |
| perpetuation | データを保存 |
 
 
>オブジェクト一覧
| オブジェクト | 役割 |
| thread | イラスト情報 |
| bbs | ボード情報 |
| app | アプリ情報 |
| feed | フィード情報 |
| user | ユーザ情報 |
| perpetuaion_data | 保存した情報 |
 
 
feedクラス
feedクラスではイラストブックの最新情報を取得することができます。次の例では、最近追加されたイラストのタイトルを表示します。
function test_feed(){
user_id=illustbook.user.getCurrentUser()
var api_url="http://www.illustbook.net/api_feed"
var args="offset=0&limit=1&order=new"
illustbook.request.get(api_url+"?method=getThreadList&"+args,feed_callback)
}
function feed_callback(oj){
var thread_list=oj.response;
alert(thread_list[0].title);
}
 
| メソッド | 概要 | 引数 | 返値 |
| getThreadList | スレッドリストの取得 |
bbs_id:ボードのID 省略時は全てのボード offset:開始オフセット limit:取得する数(最大100) order:並び順(new/applause/bookmark/moper) |
threadオブジェクトのリスト 非公開ユーザの情報は返らないため返り値はlimitより少ない場合があります。 offsetは非公開ユーザを含めて指定します。 データはキャッシュされます。 |
 
 
userクラス
userクラスではイラストブックのユーザ情報を取得することができます。
| メソッド | 概要 | 引数 | 返値 |
| getUser | ユーザの基本情報を取得 | user_id:ユーザID | userオブジェクト |
| getFollow | フォローしているユーザを取得 | user_id:ユーザID | userオブジェクトのリスト キャッシュされます |
| getFollower | フォローされているユーザを取得 | user_id:ユーザID | userオブジェクトのリスト キャッシュされます |
| getProfile | ユーザのプロフィールを取得 | user_id:ユーザID | オブジェクト profile:プロフィール |
| getBbsList | ユーザのレンタルしているボードのリストを取得 | user_id:ユーザID | bbsオブジェクトのリスト |
| getThreadList | ユーザの投稿したイラストのリストを取得 | user_id:ユーザID | threadオブジェクトのリスト |
| getTimeline | タイムラインの取得 |
user_id:ユーザID offset:開始オフセット limit:取得する数(最大100) order:並び順(new) |
feedオブジェクトのリスト 指定したユーザのフィードが返ります。 削除されたフィードの情報は返らないため返り値はlimitより少ない場合があります。 |
| getHomeTimeline | ホームタイムラインの取得 |
user_id:ユーザID offset:開始オフセット limit:取得する数(最大100) order:並び順(new) |
feedオブジェクトのリスト 指定したユーザと指定したユーザのフォローしているユーザのフィードが返ります。 削除されたフィードの情報は返らないため返り値はlimitより少ない場合があります。 |
 
 
bookmarkクラス
bookmarkクラスでは、ユーザをキーとしてブックマークしているイラストを取得したり、イラストをキーにしてブックマークしているユーザを取得するこができます。
| メソッド | 概要 | 引数 | 返値 |
| getThreadList | ブックマークしているイラストを取得 | user_id:ユーザID | threadオブジェクトのリスト |
| getBbsList | ブックマークしているボードを取得 | user_id:ユーザID | bbsオブジェクトのリスト |
| getThreadUserList | イラストをブックマークしているユーザのリストを取得 | thread_key:スレッドのキー | userオブジェクトのリスト |
| getBbsUserList | ボードをブックマークしているユーザのリストを取得 | bbs_key:ボードのkey | userオブジェクトのリスト |
| getAppUserList | アプリをブックマークしているユーザのリストを取得 | app_key:アプリのkey | userオブジェクトのリスト |
 
 
perpetuationクラス
perpetuationクラスでは、イラストブックにデータを保存したり、イラストブックからデータを読み込んだりすることができます。保存形式はキーバリューストアとなり、実データの文字列と一緒に、データのソートのための数値を格納することができます。保存時にはユーザアカウントとアプリIDを認証するため、他のユーザのデータや、他のアプリのデータを書き換えることはできません。また、ローカル環境からは動作しません。
次の例では、"test_data"という名前でデータの保存を行なっています。
function test_put_data(){
var data_obj=[];
data_obj.int_data=10;
data_obj.text_data="test";
app_key=illustbook.app.getAppKey();
user_id=illustbook.user.getCurrentUser();
data_key="test_data";
args="app_key="+app_key+"&user_id="+user_id+"&data_key="+data_key;
illustbook.request.post("api_perpetuation?method=putData&"+args,data_obj,put_data_callback);
};
function put_data_callback(oj){
alert("put:"+oj.status);
}
次の例では、"test_data"という名前からデータの読込を行なっています。
function test_get_data(){
app_key=illustbook.app.getAppKey();
user_id=illustbook.user.getCurrentUser();
data_key="test_data";
args="app_key="+app_key+"&user_id="+user_id+"&data_key="+data_key;
illustbook.request.get("api_perpetuation?method=getData&"+args,get_data_callback);
}
function get_data_callback(oj){
alert("get:"+oj.status+" int_data:"+oj.response.int_data+" text_data:"+oj.response.text_data);
}
また、アプリケーションの設定においてランキングに使用するdata_keyを指定することで、自動的にアプリにユーザランキングを追加することができます。ランキングはint_dataでソートされ、text_dataが画面に表示されます。
| メソッド | 概要 | 引数 | 返値 | 解説 |
| putData | データの保存 | app_key,data_key,user_id,text_data,int_data | なし | data_keyをキーとしてtext_dataおよびint_dataを保存します。POSTメソッドでデータを送信する必要があります。JSON APIには対応していません。ログイン中かつプレイしているアプリでない場合はエラーが返ります。保存に成功したかどうかはコールバックのstatusを確認します。 |
| getData | データの読込 | app_key,data_key,user_id | perpetuation_dataオブジェクト | data_keyをキーとしてtext_dataおよびint_dataを読み込みます。保存しているデータが存在しない場合はstatusにnodataが返ります。 |
| getRanking | ランキングの取得 | app_key,data_key,order | userオブジェクトのリスト+text_data+int_data | data_keyをキーとしてランキングを読み込みます。orderにはdescending(降順)もしくはascending(昇順)を指定します。 |
 
 
threadオブジェクト
threadオブジェクトにはイラストの情報が入ります。イラストからブックマークを検索する場合はthreadオブジェクトのkeyプロパティを使用します。
| プロパティ | 詳細 |
| title | タイトル |
| author | 投稿者 |
| summary | 要約コメント |
| thread_url | スレッドへのURL |
| create_date | 作成日時 |
| thumbnail_url | サムネイル画像へのURL(100px、正方形) |
| thumbnail2_url | サムネイル画像へのURL(200px、非正方形) |
| image_url | イラスト画像へのURL、アプリでの使用が禁止されている場合は空文字列が返ります |
| width | イラストの横幅 |
| height | イラストの高さ |
| applause | 拍手の数 |
| bookmark | ブックマークの数 |
| comment | コメントの数 |
| key | オブジェクトへのキー |
 
 
bbsオブジェクト
bbsオブジェクトにはボードの情報が入ります。
| プロパティ | 詳細 |
| title | タイトル |
| bbs_url | BBSへのURL |
| thumbnail_url | サムネイル画像へのURL(100px、正方形) |
| bookmark | ブックマークの数 |
| key | オブジェクトへのキー |
 
 
appオブジェクト
appオブジェクトにはアプリの情報が入ります。
| プロパティ | 詳細 |
| app_id | アプリID |
| name | アプリの名前 |
| app_url | アプリへのアドレス |
| icon_url | アイコンへのURL |
| key | オブジェクトへのキー |
 
 
 
feedオブジェクト
feedオブジェクトにはフィードの情報が入ります。
| プロパティ | 詳細 |
| mode | フィードの内容に応じて次の値が入ります。 bbs_new_illust:新規イラストの投稿 new_bookmark_thread:イラストのブックマーク new_follow:ユーザをフォロー new_comment_thread:イラストへのコメント new_bookmark_bbs:ボードのブックマーク message:ツイート |
| from_user | フィード発信者のuserオブジェクト |
| to_user | フィード受信者のuserオブジェクト |
| follow_user | フォローしたユーザのuserオブジェクト |
| bbs | 投稿先のbbsオブジェクト |
| thread | 投稿したイラストのthreadオブジェクト 通常、threadオブジェクトには必ずイラストを含みますが、feedオブジェクトの場合のみ、イラストを含まないthread(文字だけの投稿など)が返る場合があります。その場合、thread.image_urlとthread.thumbnail_urlが空文字列になります。 |
| message | コメント |
| create_date | 作成日時 |
| key | フィードオブジェクトへのキー |
 
 
 
userオブジェクト
userオブジェクトにはユーザの情報が入ります。メールアドレスは取得できません。
| プロパティ | 詳細 |
| user_id | ユーザID |
| name | 名前 |
| homepage | ホームページへのアドレス |
| icon_url | アイコンへのURL |
| profile_url | プロフィールへのURL |
 
 
 
perpetuation_dataオブジェクト
perpetuation_dataオブジェクトにはperpetuaion apiで保存したデータが返ります。
| プロパティ | 詳細 |
| user_id | ユーザID |
| data_id | データID |
| text_data | テキストデータ |
| int_data | 整数データ |
 
 
 
APIのアクセス制限
JSON APIは同一IPから3秒間に10回までアクセスすることができます。それを超えた場合は自動的にovercapacityエラーが返ります。アクセス制限はサーバの負荷に応じて今後変更される可能性があります。