$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
Todo el código 4D llamado desde las peticiones REST debe ser hilo-seguro si el proyecto se ejecuta en modo compilado, porque el Servidor REST siempre utiliza procesos apropiativos en este caso (el valor de la propiedad Utilizar proceso apropiativo es ignorado por el Servidor REST).
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"
}