Sm@rtDBのREST API 共通の仕様
Sm@rtDBのREST APIについて、共通の仕様を記載します。
通信
通信仕様
プロトコル | JSON-RPC 、XML-RPC (HTTP) |
---|---|
リクエストURL | http(s)://[Sm@rtDBドメイン]/hibiki/rest/2/ |
Sm@rtDBのREST APIを使用するための前提条件
Sm@rtDBのREST APIを使用するために以下の条件を満たす必要があります。
・Sm@rtDB APサーバとクライアントとの間は、HTTP(S)通信が可能であることが必要です。
・RESTの規約に則り GET,POST,PUT,DELETE のメソッド を使用します。
・以下の表 Acceptヘッダの指定にある仕様のとおりHTTPリクエストヘッダのAcceptヘッダに指定することで、レスポンスデータの形式(JSON形式かXML形式)を選択することができます。
Acceptヘッダの指定
データ形式 | HTTPのAcceptヘッダ |
---|---|
XML形式(既定値) | application/xml |
JSON形式 | application/json |
リクエストとレスポンス
REST API におけるレスポンスデータはXML形式もしくはJSON形式となります。このデータ形式はREST API使用時にHTMLのAcceptヘッダを指定することで選択することができます。「リクエストの例」および「レスポンスの例」はそれぞれREST APIを使用した際のリクエストおよびレスポンス(XML形式)の例となります。
リクエストの例
- リクエストURL
(HTTP Method:GET)
https://xxx.dreamarts.co.jp/hibiki/rest/2/binders/13979/views/10001/documents
- リクエストヘッダ
Accept: text/html,application/xhtml+xml,application/xml;q=0.9, / ;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Connection: keep-alive
Cookie: HIBIKI=930509-vJ7ZMdRW; lastSearchType=MY_APP;
JSESSIONID=5732A932B5C87807309EA704AEF0EA14;
__utma=25956072.421028494.1369362508.1369362508.1372147544.2;
__utmz=25956072.1372147544.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); WMONID=5ySdyGn5DQY; INSUITE-Enterprise_user_lang=ja;
INSUITE-Enterprise=1000484.BuzJbYRfVx5Os
Host: xxx.dreamarts.co.jp
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0)
レスポンスの例
- レスポンスヘッダ
Connection: Keep-Alive
Content-Type: application/xml
Date: Wed, 31 Jul 2013 00:18:41 GMT
Keep-Alive: timeout=10, max=100
Set-Cookie: HIBIKI=930509-vJ7ZMdRW; Path=/hibiki/
Transfer-Encoding: chunked
Vary: User-Agent
- レスポンスデータ
<documents>
<document>
<id>2</id>
<created>
<id>1000039</id>
<key>taro</key>
<name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</created>
<created_at>2013-05-03T09:12:54+09:00</created_at>
<updated>
<id>1000039</id>
<key>taro</key>
<name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</updated>
<updated_at>2013-05-08T19:19:40+09:00</updated_at>
<item>
<id>10008</id>
<key>PRIVILEGE_KEY</key>
<type>Text</type>
<value>CDS_IPAD_USER</value>
</item>
<item>
<id>10004</id>
<key>PRIVILEGE_NAME</key>
<type>Text</type>
<value>iPad利用可能ユーザ</value>
</item>
<item>
<id>10005</id>
<key>PRIVILEGE_ACCOUNT</key>
<type>AccountList</type>
<value>[2000018]</value>
</item>
</document>
<document>
<id>1</id>
<created>
<id>1000039</id>
<key>taro</key><name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</created>
<created_at>2013-05-03T09:12:54+09:00</created_at>
<updated>
<id>1000039</id>
<key>taro</key>
<name>ドリーム 太郎</name>
<type>1</type>
<email>taro@dreamarts.co.jp</email>
<primary>2000380</primary>
</updated>
<updated_at>2013-05-08T19:19:40+09:00</updated_at>
<item>
<id>10008</id>
<key>PRIVILEGE_KEY</key>
<type>Text</type>
<value>CDS_ADMIN</value>
</item>
<item>
<id>10004</id>
<key>PRIVILEGE_NAME</key>
<type>Text</type>
<value>iPad向けコンテンツ配信システム管理者</value>
</item>
<item>
<id>10005</id>
<key>PRIVILEGE_ACCOUNT</key>
<type>AccountList</type>
<value>[2000000]</value>
</item>
</document>
<totalCount>537</totalCount>
</documents>
Sm@rtDBのREST APIの利用例
Sm@rtDBのREST API を用いてSm@rtDB 内の各種データにアクセスするためには、Basic認証もしくはCookie認証を用いてSm@rtDB へログインする必要があります(Proxy経由でProxy側のBasic認証を使う場合はCookie認証のみ利用可)。認証後、必要なデータ取得処理・更新処理を行うのがREST APIの典型的な利用方法です。
Sm@rtDB の文書一覧・詳細情報を取得する場合のAPI呼び出し例はSm@rtDBのREST API利用フローのようになります。(認証処理については、後述の「セッション処理フロー図」も合わせて参照してください)。
Sm@rtDBのREST API利用フロー(Sm@rtDBの文書一覧を取得し、文書を更新する場合)
● 説明
・この例(Sm@rtDBのREST API利用フロー)におけるクライアントアプリケーションの動作の概要は以下となります。
- セッション情報を取得し、文書一覧を画面表示します。(①~④)
- ユーザが表示された文書一覧から更新する文書を選択すると、その文書の詳細画面を表示します。(⑤)
- ユーザが文書の更新情報を入力し、送信することで文書の更新を行います。(⑥~⑦)
● 備考
①' で返却されるデータには、次回以降のAPI呼び出しで必要となるCSRFトークンが含まれます。図上での記載はありませんが、②以降のリクエストのパラメーターとして、①'で取得したCSRFトークンをセットしています。
セッション処理フロー
エラーコード一覧
Sm@rtDBのREST APIでエラーが発生した場合、下記のHTTPレスポンスコードが返却されます。
エラーコード一覧
エラーコード | エラー内容 |
---|---|
400 Bad request | 不正なリクエスト、CSRFトークンチェックに失敗している |
401 Unauthorized | 認証処理に失敗している(ログインに失敗 しているor ログインしていない) |
403 RESTful service is disabled | RESTサービスが無効になっている |
404 Not Found | 該当するリソース(session,binder,view,document) が見つからない |
406 NotAcceptable | 全文検索でALL、ONE以外の不正なマッチモードを指定されている |
500 Internal Server Error | その他サーバー側のエラーが発生している |
- エラーの例(XML形式)
<error>
<code>401</code>
<message>Unauthorized</message>
</error>
- エラーの例(json形式)
{"code":401,"message":"Unauthorized"}