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

$singleton

共有シングルトンの公開関数 は、REST で直接呼び出すことができます。

シングルトン関数は、$singleton コマンド (()は不要です) を使用して POSTリクエストで呼び出されます。 たとえば、VehicleFactory 共有シングルトンクラスに buildVehicle() 関数を定義した場合、次のリクエストで呼び出すことができます:

/rest/$singleton/VehicleFactory/buildVehicle

POSTリクエストのボディに関数に渡す引数を含めます: ["truck"]

この呼び出しは、4Dランゲージでは次のステートメントに相当します:

$singleton:=cs.VehicleFactory.me.buildVehicle("truck")

RESTリクエストから直接呼び出すことができるのは、exposed キーワード が付いた関数のみです。

関数の呼び出し

シングルトン関数は必ず REST の POST リクエストで呼び出さなくてはなりません (GETリクエストの場合はエラーが返されます)。 シンタックスは次の通りです:

/rest/$singleton/SingletonClass/SingletonClassFunction

プロジェクトがコンパイル済みモードで実行される場合、RESTサーバーは常にプリエンプティブプロセスを使用するため、RESTリクエストから呼び出されるすべての 4Dコードは スレッドセーフでなければなりません (プリエンプティブプロセスを使用 の設定値 は、RESTサーバーによって無視されます)。

info

特定のシングルトン関数の呼び出しを制限するには、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"
}