Le composant LightREST propose, en plus de la possibilité de déployer des Web Services en REST, un système de plus haut niveau appelé DataService.
Il arrive fréquemment qu’on ait besoin de publier plusieurs tables d’une base de données sur des routes différentes. Il peut alors devenir pénible de déclarer chaque route et de développer des procédures REST très semblables à la différence près qu’elles ne distribuent pas les données de la même table de la base de données.
DataService (qui est une “surcouche” de LightREST) permet d’activer, sans aucun développement de procédure REST, des routes “branchées” sur des tables ou des requêtes et de les diffuser à travers un Web Service REST, au format JSON. Bien évidemment un contrôle complet sur le données diffusées, les destinataires, les méthodes REST autorisées est inclus. DataService utilisant LightREST, toutes les caractéristiques et avantages de celui-ci sont conservés.
Comme indiqué dans la documentation LightREST, les bonnes pratiques de sécurité interdisent la diffusion en clair d’identifiants de la base de donnée à des tiers extérieurs. DataService propose donc un chiffrement/déchiffrement automatique des IDs automatiques numériques, ce qui permet de sécuriser les données sans aucune intervention du développeur. Les IDs de type entier sont remplacés par des UUIDs lorsqu’on on envoie des données par un Web Service. Si un UUID est reçu comme paramètre d’une requête, DataService le déchiffre automatiquement et permet d’accéder à l’enregistrement concerné.
Pour garder un contrôle complet sur l’exécution des processus DataService , le développeur peut déclarer des procédures qui s’exécuteront automatiquement avant et après chaque appel. Ces procédures pourront, par exemple :
- Contrôler le droit d’accès à une donnée
- Vérifier la cohérence d’un enregistrement avant insertion ou modification d’un enregistrement
- Refuser la mise à jour d’une donnée
- Forcer des valeurs par défaut
- Compléter, effacer, modifier des données avant envoi du résultat
- …
Avec DataService, le développeur peut publier sans effort des données provenant de différentes sources :
- Table de base de données (ou fichier sous HyperfileSQL)
- Requête WinDev (.wdr)
- Requête SQL format texte
DataService gère optionnellement la pagination dans distribution des données, afin que l’appelant puisse, par exemple, affiche des données volumineuses de façon optimisée.
DataService sait également distribuer automatiquement en REST des mémos images stockés dans une base HyperfileSQL, avec redimensionnement possible à la volée.
Pour chaque type de source de données, on dispose d’un objet spécifique :
- dsTable : table de la base de données
- dsRequeteWD : requête WinDev (.wdr)
- dsRequeteTXT : requête Texte