$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")
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).
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
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"
}