REST API 概要最終更新日: 2020年3月14日
R8 | R9

REST API とは

Wagbyアプリケーションは標準で REST API に対応しています。

開発者はWagbyアプリケーションが稼働しているサーバ(ホスト)に HTTP リクエストを送信すると、JSON 形式で結果を取得することができます。

この仕組みを用いて専用のフロントエンドアプリケーションから、HTTP リクエストを用いて Wagby に格納されているデータの取得や登録、更新、削除といったデータベース操作が可能になります。PC だけでなく iOS や Android OS からもアクセスできます。

提供される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 という表記を使います。

@RequestMapping(value="/rest/session", method=PUT)

という表記は

http://localhost:8921/wagby/rest/session

method=PUT

でアクセスすることを示します。

また

produces="application/json"
という表記は、HTTPヘッダーに

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);