メインコンテンツまでスキップ
バージョン: 20

サーバー設定

4D の RESTサーバーは、標準の HTTPリクエストを用いて外部アプリケーションがアプリケーションのデータにアクセスすることを可能にします。つまり、プロジェクトのデータクラス情報を取得したり、データを操作したり、Webアプリケーションにログインしたり、といったことが可能です。

REST機能を使い始めるまえに、まずは 4D REST サーバーの設定をおこない、これを起動させる必要があります。

  • 4D Server上では、開かれる RESTセッションにつき、4D Client ライセンスが1消費されます。
  • シングルユーザーの 4D では、テスト目的で RESTセッションを 3つまで開くことができます。
  • リクエストをおこなうアプリケーションの セッション は別途管理する必要があります。

RESTサーバーを開始する

セキュリティ上の理由により、デフォルトでは、4D は RESTリクエストに応答しません。 RESTサーバーを開始し、RESTリクエストを処理するには、ストラクチャー設定WebWeb機能 ページにて、RESTサーバーとして公開 オプションを有効化する必要があります。

alt-text

RESTサービスは 4D の HTTPサーバーを使用するため、4D Webサーバーが開始されていることを確認してください。

このオプションが有効化されると、「警告: アクセス権が正しく設定されているか確認してください。」という警告メッセージが表示されます。これは REST接続の認証設定がされていない限り、デフォルトではデータベースオブジェクトに自由にアクセスできてしまうためです。

変更を反映するには、4Dアプリケーションを再起動する必要があります。

アクセス権の設定

デフォルトでは、REST接続はすべてのユーザーに対してオープンですが、この状態はライセンス管理上もセキュリティ上も推奨されません。

REST接続は次の方法で制限することができます:

  • ストラクチャー設定の "WebWeb機能" ページにて、RESTサービスに割り当てる 読み込み/書き出し ユーザーグループを設定します;
  • On REST Authentication データベースメソッドに、RESTの初期リクエストを処理するコードを書きます。

上に挙げた 2つの方法を同時に使用することはできません。 On REST Authentication データベースメソッドを定義した場合、4D は RESTリクエストの処理を同メソッドに委ねます。つまり、ストラクチャー設定の "WebWeb機能" ページにて指定した "読み込み/書き出し" の設定は無視されます。

ストラクチャー設定を使用する

ストラクチャー設定の "WebWeb機能" ページにある 読み込み/書き出し 設定は、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] テーブルを作成し、その中にユーザー名とパスワードが保存されている場合、そのテーブルは公開しない方が賢明でしょう。

テーブルを公開したくない場合は:

  1. ストラクチャーエディターにて対象となるテーブルを選択し、右クリックでコンテキストメニューを開いてテーブルプロパティを選択します。

  2. RESTリソースとして公開 オプションの選択を解除します: alt-text 公開設定を変更する各テーブルに対して、この手順を繰り返します。

フィールドの公開

デフォルトでは、すべての 4Dデータベースフィールドが REST に公開されています。

テーブルの一部のフィールドのみを非公開にしたい状況もあるでしょう。 たとえば、[Employees]Salary のようなフィールドは非公開の方がよいでしょう。

フィールドを非公開にするには:

  1. ストラクチャーエディターにて対象となるフィールドを選択し、右クリックでコンテキストメニューを開いてフィールドプロパティを選択します。

  2. フィールドの RESTリソースとして公開 オプションの選択を解除します: alt-text 公開設定を変更する各フィールドに対してこの手順を繰り返します。

あるフィールドが REST を通してアクセス可能であるためには、その親テーブルも公開されている必要があります。 親テーブルが公開されていない場合、各フィールドの公開設定に関わらず、すべてのフィールドがアクセス不可になります。