Saltar al contenido principal
Versión: 20 R6 BETA

$singleton

Puede llamar directamente a [funciones de sus singletons compartidos] (../Concepts/classes.md#singleton-classes) a través de REST.

Las funciones Singleton se llaman en peticiones POST con el comando $singleton y sin (). Por ejemplo, si ha definido una función buildVehicle() en la clase compartida singleton VehicleFactory, podría llamarla utilizando la siguiente petición:

/rest/$singleton/VehicleFactory/buildVehicle

con los datos en el cuerpo de la petición POST: ["truck"]

En el lenguaje 4D, esta llamada equivale a:

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

Tenga en cuenta que sólo las funciones con la palabra clave exposed pueden ser llamadas directamente desde peticiones REST.

Llamadas de las funciones

Las funciones Singleton deben llamarse siempre utilizando peticiones REST POST (una petición GET recibirá un error). La sintaxis formal es:

/rest/$singleton/SingletonClass/SingletonClassFunction

All 4D code called from REST requests must be thread-safe if the project runs in compiled mode, because the REST Server always uses preemptive processes in this case (the Use preemptive process setting value is ignored by the REST Server).

info

Puede restringir las llamadas a funciones singleton específicas configurando los privilegios apropiados en el archivo roles.json.

Parámetros

Puede enviar parámetros a funciones singleton. Del lado del servidor, serán recibidos en los parámetros declarados de las funciones clase singleton.

Enviar parámetros a funciones singleton es exactamente lo mismo que enviar parámetros a funciones de clase ORDA. Consulte el párrafo Parámetros de la página "Llamada a funciones clase" para obtener una descripción detallada.

Ejemplo

Ha creado un singleton compartido sencillo con una función expuesta:

//class mySingleton

shared singleton Class constructor()

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

nota

La clase mySingleton y la función sayHello se listan cuando se llama al comando $catalog.

A continuación, puede ejecutar esta petición:

POST /rest/$singleton/mySingleton/sayHello

Cuerpo de la petición: ["John"]

Respuesta

{
"result": "Hello John"
}