$singleton
Você pode chamar diretamente as [funções de seus singletons compartilhados] expostas (../Concepts/classes.md#singleton-classes) por meio de REST.
As funções singleton são chamadas em solicitações POST com o comando $singleton
e sem ()
. Por exemplo, se você tiver definido uma função buildVehicle()
na classe singleton compartilhada VehicleFactory
, poderá chamá-la usando a seguinte solicitação:
/rest/$singleton/VehicleFactory/buildVehicle
com dados no corpo do pedido POST: ["truck"]
Na linguagem 4D, esta chamada é equivalente a:
$singleton:=cs.VehicleFactory.me.buildVehicle("truck")
Tenha em mente que somente funções com a palavra-chave exposed
podem ser diretamente chamadas de solicitações REST.
Chamadas funções
Las funciones Singleton deben llamarse siempre utilizando peticiones POST (una petición GET recibirá un error). A sintaxe formal é:
/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).
Você pode restringir chamadas a funções singleton específicas configurando os privilégios apropriados no arquivo roles.json.
Parâmetros
Você pode enviar parâmetros para funções singleton. Del lado del servidor, serán recibidos en los parámetros declarados de las funciones clase singleton.
O envio de parâmetros para funções singleton é exatamente igual ao envio de parâmetros para funções de classe ORDA. Por favor, consulte o parágrafo Parâmetros da página "Chamando as funções classe" para uma descrição detalhada.
Exemplo
Você criou um singleton compartilhado simples com uma função exposta:
//class mySingleton
shared singleton Class constructor()
exposed Function sayHello ($value : Text)
return "Hello "+$value
A classe mySingleton
e a função sayHello
são listadas quando você chama o comando $catalog
.
Pode então executar este pedido:
POST /rest/$singleton/mySingleton/sayHello
Corpo da solicitação: ["John"]
Resposta
{
"result": "Hello John"
}