サーバー設定
4D の RESTサーバーは、標準の HTTPリクエストを用いて外部アプリケーションがアプリケーションのデータにアクセスすることを可能にします。つまり、プロジェクトのデータクラス情報を取得したり、データを操作したり、Webアプリケーションにログインしたり、といったことが可能です。
REST機能を使い始めるまえに、まずは 4D REST サーバーの設定をおこない、これを起動させる必要があります。
- 4D Server 上では、開かれる RESTセッションにつき、4Dクライアントライセンスが 1 消費されます。
- シングルユーザーの 4D では、テスト目的で RESTセッションを 3つまで開くことができます。
- You need to manage the session for your requesting application.
RESTサーバーを開始する
セキュリティ上の理由により、デフォルトでは、4D は RESTリクエストに応答しません。 RESTサーバーを開始し、RESTリクエストを処理するには、ストラクチャー設定 の Web > Web機能 ページにて、RESTサーバーとして公開 オプションを有効化する必要があります。

RESTサービスは 4D の HTTPサーバーを使用するため、4D Webサーバーが開始されていることを確認してください。
このオプションが有効化されると、「警告: アクセス権が正しく設定されているか確認してください。 」という警告メッセージが表示されます。 これは REST接続の認証設定がされていない限り、デフォルトではデータベースオブジェクトに自由にアクセスできてしまうためです。
変更を反映するには、4Dアプリケーションを再起動する必要があります。
アクセス権の設定
デフォルトでは、REST接続はすべてのユーザーに対してオープンですが、この状態はライセンス管理上もセキュリティ上も推奨されません。
REST接続は次の方法で制限することができます:
- assigning a Read/Write user group to REST services in the "Web > Web Features" page of the Structure Settings;
- writing an
On REST Authenticationdatabase method to intercept and handle every initial REST request.
上に挙げた 2つの方法を同時に使用することはできません。 Once an
On REST Authenticationdatabase method has been defined, 4D fully delegates control of REST requests to it: any setting made using the "Read/Write" menu on the Web > Web Features page of the Structure Settings is ignored.
ストラクチャー設定を使用する
ストラクチャー設定の "Web > Web機能" ページにある 読み込み/書き出し 設定は、RESTクエリを使って 4Dアプリケーションへのリンクを設立することのできる 4Dユーザーのグループを指定します。
デフォルトでは、メニューには <Anyone> が選択されています。 これは、REST接続はすべてのユーザーに対してオープンであるという状態を示しています。グループを指定すると、そのグループに所属する 4Dユーザーアカウントのみが RESTリクエストを通して 4D にアクセス できるようになります。このグループに所属していないアカウントの場合、4D はリクエストの送信者に対して認証エラーを返します。
この設定を使用するには、
On REST Authenticationデータベースメソッドを定義してはいけません。これが定義されている場合は、ストラクチャー設定にて指定したアクセス設定は無視されます。
On REST Authentication データベースメソッドを使用する
On REST Authentication データベースメソッド は 4D 上で RESTセッションの開始を管理するための方法を提供します。 RESTリクエストによって新規セッションが開始される際、このデータベースメソッドは自動的に呼び出されます。 RESTセッション開始のリクエスト を受信すると、そのリクエストヘッダーには接続の識別子が含まれています。これらの識別子を評価するために On REST Authentication データベースメソッドは呼び出されます。評価にあたっては、4Dアプリケーションのユーザーリストを使用することもできますし、独自の識別子のテーブルを使用することもできます。詳細については On REST Authentication データベースメソッドの ドキュメンテーション を参照ください。
テーブルやフィールドの公開
4Dアプリケーションの RESTサービスが有効化されると、データストアインターフェース を通して 4Dデータベースのすべてのテーブルとフィールドおよび格納データが RESTセッションによってデフォルトでアクセス可能です。つまり、すべてのデータにアクセス可能ということです。たとえば、データベースに [Employee] テーブルが含まれている場合、次のように書くことができます:
http://127.0.0.1:8044/rest/Employee/?$filter="salary>10000"
このリクエストで、salary (給与) フィールドが 10000以上の社員データが取得されます。
"非表示" 属性を選択されたテーブルやフィールドも、デフォルトで REST に公開されています。
REST 経由でアクセス可能なデータストアオブジェクトを制限するには、アクセス不可にするテーブルやフィールドについて "RESTリソースとして公開" オプションを選択解除する必要があります。許可されていないリソースへの RESTリクエストがあった場合、4Dはエラーを返します。
テーブルの公開
デフォルトでは、すべてのテーブルが REST に公開されています。
セキュリティ上の理由から、データベースの一部のテーブルのみを公開したい状況もあるでしょう。たとえば、[Users] テーブルを作成し、その中にユーザー名とパスワードが保存されている場合、そのテーブルは公開しない方が賢明でしょう。
テーブルを公開したくない場合は:
-
ストラクチャーエディターにて対象となるテーブルを選択し、右クリックでコンテキストメニューを開いてテーブルプロパティを選択します。
-
RESTリソースとして公開 オプションの選択を解除します:
公開設定を変更する各テーブルに対して、この手順を繰り返します。
フィールドの公開
デフォルトでは、すべての 4Dデータベースフィールドが REST に公開されています。
テーブルの一部のフィールドのみを非公開にしたい状況もあるでしょう。たとえば、[Employees]Salary のようなフィールドは非公開の方がよいでしょう。
フィールドを非公開にするには:
-
ストラクチャーエディターにて対象となるフィールドを選択し、右クリックでコンテキストメニューを開いてフィールドプロパティを選択します。
-
フィールドの RESTリソースとして公開 オプションの選択を解除します: フィールドの RESTリソースとして公開 オプションの選択を解除します:
Repeat this for each field whose exposure needs to be modified.
あるフィールドが REST を通してアクセス可能であるためには、その親テーブルも公開されている必要があります。親テーブルが公開されていない場合、各フィールドの公開設定に関わらず、すべてのフィールドがアクセス不可になります。