Aller au contenu principal
Version: 20 R10 BETA

$singleton

Vous pouvez appeler directement les fonctions exposées de vos shared singletons via REST.

Les fonctions singleton sont appelées dans des requêtes POST ou GET avec la commande $singleton et sans (). Par exemple, si vous avez défini une fonction buildVehicle() dans la classe singleton partagée VehicleFactory, vous pouvez l'appeler à l'aide de la requête suivante :

/rest/$singleton/VehicleFactory/buildVehicle

avec les données dans le body de la requête POST : ["truck"]

En langage 4D, cet appel est équivalent à :

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

N'oubliez pas que seules les fonctions avec le mot-clé exposed peuvent être directement appelées à partir de requêtes REST.

Appeler des fonctions

Les fonctions Singleton peuvent être appelées à l'aide de requêtes REST POST ou GET.

La syntaxe formelle est la suivante :

Requête POST

/rest/$singleton/SingletonClass/SingletonClassFunction

avec les données contenues dans le body de la requête POST : ["myparam"]

Requête GET

/rest/$singleton/SingletonClass/SingletonClassFunction?$params='["myparam"]'

note

La fonction SingletonClassFunction() doit avoir été déclarée avec le mot-clé onHTTPGet pour pouvoir être appelée avec GET (voir Configuration de fonction).

L'ensemble du code 4D appelé à partir de requêtes REST doit être thread-safe si le projet fonctionne en mode compilé, car le serveur REST utilise toujours des process préemptifs dans ce cas (la valeur du paramètre Use preemptive process est ignorée par le serveur REST).

info

Vous pouvez limiter les appels à des fonctions singleton spécifiques en configurant les privilèges appropriés dans le fichier roles.json.

Paramètres

Vous pouvez envoyer des paramètres aux fonctions singleton. Côté serveur, ils seront reçus dans les paramètres déclarés des fonctions de la classe singleton.

L'envoi de paramètres aux fonctions singleton est exactement le même que l'envoi de paramètres aux fonctions de classe ORDA. Veuillez vous référer au paragraphe Paramètres de la page "Appeler des fonctions de classe" pour une description détaillée.

Exemple

Vous avez créé un singleton partagé simple avec une fonction exposée :

//class mySingleton

shared singleton Class constructor()

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

note

La classe mySingleton et la fonction sayHello sont listées lorsque vous appelez la commande $catalog.

Vous pouvez lancer cette requête :

POST /rest/$singleton/mySingleton/sayHello

Body de la requête : ["John"]

Réponse

{
"result": "Hello John"
}