はじめに
4D は、4Dアプリケーションに格納されているデータへのダイレクトアクセスを可能にする強力な RESTサーバーを提供しています。
RESTサーバーは 4D および 4D Server に含まれており、設定完了後は 4Dアプリケーションにて自動的に利用可能となります。
この章では、簡単な例題を使用して REST機能を紹介します。 これから、実際に次のことをしてみましょう:
- 簡単な 4Dアプリケーションプロジェクトを作成し、設定します。
- 標準のブラウザーを開き、REST を介して 4Dプロジェクトのデータにアクセスします。
例題が複雑にならないよう、ここでは 4D とブラウザーを同じマシン上で使用します。 もちろん、リモートアーキテクチャーを使うことも可能です。
4Dプロジェクトの作成と設定
-
4D または 4D Server アプリケーションを起動し、新規プロジェクトを作成します。 名前は仮に "Emp4D" とします。
-
ストラクチャーエディターを開き、[Employees] テーブルを作成して、次のフィールドを追加します:
- Lastname (文字列)
- Firstname (文字列)
- Salary (倍長整数)
テーブルおよび各フィールドの "RESTリソースとして公開" オプションはデフォルトで選択されています。これを変更しないでください。
- フォームを作成し、何名かの社員レコードを作成します:
-
ストラクチャー設定の Web > RESTリソース ページを開き、RESTサーバーとして公開 オプションを選択します。
-
上部の 実行 メニューから、必要に応じて Webサーバー開始 を選択し、次に同メニューから Webサーバーテスト を選択します。
既定のブラウザーが開かれ、4D Webサーバーのデフォルトホームページが表示されます。
ブラウザーから 4D データにアクセスする
これで、RESTリクエストを使った 4D のデータの読み込み・編集が可能になりました。
4D の REST URL リクエストは必ず、address:port
エリアの後に入る /rest
から始まります。 たとえば、4Dデータストアの内容を確認するには、次のように書けます:
http://127.0.0.1/rest/$catalog
RESTサーバーの応答です:
{
"__UNIQID": "96A49F7EF2ABDE44BF32059D9ABC65C1",
"dataClasses": [
{
"name": "Employees",
"uri": "/rest/$catalog/Employees",
"dataURI": "/rest/Employees"
}
]
}
これは、データストアに Employees データクラスが格納されていることを意味します。 データクラス属性を確認するには、次のように書きます:
/rest/$catalog/Employees
また、Employees データクラスの全エンティティを取得するには:
/rest/Employees
レスポンス:
{
"__entityModel": "Employees",
"__GlobalStamp": 0,
"__COUNT": 3,
"__FIRST": 0,
"__ENTITIES": [
{
"__KEY": "1",
"__TIMESTAMP": "2020-01-07T17:07:52.467Z",
"__STAMP": 2,
"ID": 1,
"Lastname": "Brown",
"Firstname": "Michael",
"Salary": 25000
},
{
"__KEY": "2",
"__TIMESTAMP": "2020-01-07T17:08:14.387Z",
"__STAMP": 2,
"ID": 2,
"Lastname": "Jones",
"Firstname": "Maryanne",
"Salary": 35000
},
{
"__KEY": "3",
"__TIMESTAMP": "2020-01-07T17:08:34.844Z",
"__STAMP": 2,
"ID": 3,
"Lastname": "Smithers",
"Firstname": "Jack",
"Salary": 41000
}
],
"__SENT": 3
}
取得するデータを様々な条件でフィルターすることも可能です。 たとえば、2番目のエンティティの "Lastname" 属性値のみを取得するには、次のように書きます:
/rest/Employees(2)/Lastname
レスポンス:
{
"__entityModel": "Employees",
"__KEY": "2",
"__TIMESTAMP": "2020-01-07T17:08:14.387Z",
"__STAMP": 2,
"Lastname": "Jones"
}
4D の REST API は、4Dアプリケーションを操作するためのコマンドを多数提供しています。