REST API 概要
最終更新日: 2020年3月14日
R8 | R9
Wagbyアプリケーションは標準で REST API に対応しています。
開発者はWagbyアプリケーションが稼働しているサーバ(ホスト)に HTTP リクエストを送信すると、JSON 形式で結果を取得することができます。
この仕組みを用いて専用のフロントエンドアプリケーションから、HTTP リクエストを用いて Wagby に格納されているデータの取得や登録、更新、削除といったデータベース操作が可能になります。PC だけでなく iOS や Android OS からもアクセスできます。
代表的なAPIを示します。詳細は各ページに記載しています。
本ガイドでは、RequestMapping という表記を使います。
という表記は
http://localhost:8921/wagby/rest/session
に
method=PUT
でアクセスすることを示します。
またREST API とは
提供されるAPI
URL
HTTPメソッド
説明
/rest/session
POST
ログオン
/rest/session
DELETE
ログオフ
/rest/session
GET
ログオンユーザの情報を取得
/rest/[モデル名]/list
GET
一覧表示データを取得
/rest/[モデル名]/list
POST
検索条件を指定してデータを取得
/rest/[モデル名]/entry/[主キー]
GET
主キーで指定したデータを取得
/rest/[モデル名]/new
GET
データの新規登録を開始
/rest/[モデル名]/new
POST
データの新規登録を実行
/rest/[モデル名]/edit/[主キー]
GET
主キーで指定したデータの更新を開始
/rest/[モデル名]/edit
PUT
主キーで指定したデータの更新を実行
/rest/[モデル名]/edit/[主キー]
DELETE
主キーで指定したデータを削除
表記方法
@RequestMapping(value="/rest/session", method=PUT)
produces="application/json"
Accept:application/json
を設定することを示します。
Cookieについて
JSESSIONIDの扱い
セキュリティを担保するため、Wagbyアプリケーションへの操作には認証が必須です。このためにCookieを使います。
ログオン機能以外は、CookieにJSESSIONIDが設定されていないと
STATUS=401 Unauthorized
を返します。
Cookieを使わない認証
リクエストヘッダに X-Wagby-Authorization を加えることで「ログオンし、REST APIを実行し、すぐにログオフする」運用を行うことができます。この場合は Cookie に JSESSIONID を記憶させる必要はありません。(REST API 呼び出しの都度、ログオンとログオフ処理を行います。)
セキュリティに関する注意点
REST API 利用時も、通常の Web アプリケーションと同じく、通信路を暗号化しない限り、ログオン情報やデータは盗聴される危険があります。
このため実際の運用では、HTTP暗号化通信 (HTTPS) を使うようにしてください。具体的には「サーバ証明書」を購入します。WagbyアプリケーションはTomcatをベースにしているため、Tomcatへのサーバ証明書登録と同じ手順で設定できます。(詳細は「サーバ証明書」の発行元、もしくはWagby販売パートナーへお問い合わせください。)
仕様・制約
画面内の処理と併用して呼び出すことはできません
REST APIをWagbyの画面内の処理と併用して呼び出すといったカスタマイズには利用できません。
例えば JavaScript を使って、一覧更新画面内にて REST API を呼び出す、といったカスタマイズを行うことはできません。
日付時刻型のデータについて
REST API で取得できるentityに含まれる日付型、時刻型は文字列表現ですが、日付時刻型のデータはlong値で表現されています。
フォーマットされた日付時刻データを扱いたい場合はentitypやlistpに含まれる値を利用してください。
詳細
このlong値はJavaScriptのDateで扱える「協定世界時 (UTC) 1970 年 1 月 1 日 00:00:00 からの経過時間をミリ秒単位で表す時刻」です。
例えば次の JavaScript コードで (entity に含まれる項目 updated_at の値、実体は long 値を) JavaScript の Date オブジェクトにすることができます。
var obj = JSON.parse(httpObj.responseText);
var updated_at = new Date();
updated_at.setTime(obj.entity.updated_at);
console.log(updated_at);