$singleton
Puede llamar directamente a [funciones de sus singletons compartidos] (../Concepts/classes.md#singleton-classes) a través de REST.
Singleton functions are called in POST or GET requests with the $singleton
command and without ()
. 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
Singleton functions can be called using REST POST or GET requests.
La sintaxis formal es:
POST request
/rest/$singleton/SingletonClass/SingletonClassFunction
with data in the body of the POST request: ["myparam"]
GET request
/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'
La función SingletonClassFunction()
debe haber sido declarada con la palabra clave onHttpGet
para ser invocable con GET
(ver Configuración de funciones).
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"
}