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

$singleton

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

Singleton functions are called in POST or GET requests with the $singleton command and without (). たとえば、VehicleFactory 共有シングルトンクラスに buildVehicle() 関数を定義した場合、次のリクエストで呼び出すことができます:

/rest/$singleton/VehicleFactory/buildVehicle

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

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

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

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

関数の呼び出し

Singleton functions can be called using REST POST or GET requests.

シンタックスは次の通りです:

POST リクエスト

/rest/$singleton/SingletonClass/SingletonClassFunction

with data in the body of the POST request: ["myparam"]

GET リクエスト

/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'

The SingletonClassFunction() function must have been declared with the onHttpGet keyword to be callable with GET (see Function configuration).

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

info

特定のシングルトン関数の呼び出しを制限するには、roles.json ファイルで適切な権限を設定することができます。

引数

シングルトン関数に引数を渡すことができます。 サーバーサイドでこれらの引数は、シングルトンクラス関数の 宣言されたパラメーター に受け渡されます。

シングルトン関数に引数を渡す方法は、ORDAクラスの関数に引数を渡すのとまったく同じです。 詳細については、"クラス関数の呼び出し" ページの 引数 の段落 を参照ください。

例題

公開関数を持つ、シンプルな共有シングルトンを作成します:

// class mySingleton

shared singleton Class constructor()

exposed Function sayHello ($value : Text)
return "Hello "+$value

The mySingleton class and sayHello function are listed when you call the $catalog command.

次のリクエストを実行します:

POST /rest/$singleton/mySingleton/sayHello

リクエストのボディ: ["John"]

レスポンス

{
"result": "Hello John"
}