$singleton
共有シングルトンの公開関数 は、REST で直接呼び出すことができます。
シングルトン関数は、$singleton
コマンド (()
は不要です) を使用して POSTリクエストまたはGET リクエストで呼び出されます。 たとえば、VehicleFactory
共有シングルトンクラスに buildVehicle()
関数を定義した場合、次のリクエストで呼び出すことができます:
/rest/$singleton/VehicleFactory/buildVehicle
POSTリクエストのボディに関数に渡す引数を含めます: ["truck"]
この呼び出しは、4Dランゲージでは次のステートメントに相当します:
$singleton:=cs.VehicleFactory.me.buildVehicle("truck")
RESTリクエストから直接呼び出すことができるのは、exposed
キーワード が付いた関数のみです。
関数の呼び出し
シングルトン関数はREST POST またはREST GET リクエストを使用して呼び出すことができます。
シンタックスは次の通りです:
POST リクエスト
/rest/$singleton/SingletonClass/SingletonClassFunction
POST リクエストのボディに関数に渡す引数を含めます: ["myparam"]
GET リクエスト
/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'
SingletonClassFunction()
関数を GET
で呼び出し可能にするためには、この関数は onHttpGet
キーワードで宣言されている必要があります(関数の設定 を参照して下さい)。
プロジェクトがコンパイルモードで実行されている場合、REST リクエストから呼び出される4D コードは全てスレッドセーフでなければなりません。この場合、REST サーバーは常にプリエンプティブプロセスを使用するからです(プリエンプティブプロセスを使用 の設定値 はREST サーバーは無視します)。
特定のシングルトン関数の呼び出しを制限するには、roles.json ファイルで適切な権限を設定することができます。
引数
シングルトン関数に引数を渡すことができます。 サーバーサイドでこれらの引数は、シングルトンクラス関数の 宣言されたパラメーター に受け渡されます。
シングルトン関数に引数を渡す方法は、ORDAクラスの関数に引数を渡すのとまったく同じです。 詳細については、"クラス関数の呼び出し" ページの 引数 の段落 を参照ください。
例題
公開関数を持つ、シンプルな共有シングルトンを作成します:
// class mySingleton
shared singleton Class constructor()
exposed Function sayHello ($value : Text)
return "Hello "+$value
$catalog
コマンドを呼び出すと、mySingleton
クラスと sayHello
関数がリストされます。
次のリクエストを実行します:
POST /rest/$singleton/mySingleton/sayHello
リクエストのボディ: ["John"]
レスポンス
{
"result": "Hello John"
}