Documentation LightREST
Le composant LightREST contient toutes les fonctions et constantes nécessaires pour faciliter le développement de Web Services REST sous WinDev®.
Il met à disposition du développeur :
- Les Classes lrServer, lrRequest, lrResponse, lrSession.
- Les Constantes Method : Méthodes REST (GET, POST, …)
- Les Constantes Content : Type MIME du contenu de la réponse (application/json, text/plain, …)
- Les Constantes Status : Statut d’exécution (200=OK, 401=Non autorisé, …)
Nul besoin de connaître les codes des statuts ou des types MIME par coeur, les constantes LightREST sont là pour les renseigner à votre place.
L’implémentation d’un serveur REST avec LightREST se fait simplement :
- Détermination des services à déployer : Pour chaque service, une route est définir (=une URL + une méthode). Chaque Route est rattachée à une procédure WinDev qui sera appelée par LightREST lorsqu’une URL correspondant à la Route sera appelée. Pour une meilleure lisibilité, cette procédure WinDev sera appelée Procédure REST dans cette documentation.
- Implémentation des procédures REST : Pour chaque Route+Méthode, la procédure reçoit un objet lrRequest en paramètre et doit retourner un résultat de type lrResponse
Chaque procédure REST est exécutée par LightREST avec un contexte Hyperfile séparé, il n’y a donc pas de risques de collisions lorsque plusieurs appels REST sont exécutés simultanément (une même Procédure REST peut se trouver en cours d’exécution plusieurs fois en parallèle au même instant). Il est toutefois recommandé d’ouvrir systématiquement une connexion à la base de données (que ce soit Hyperfile ou une autre) pour bien isoler les traitements du point de vue du moteur de la base de données. L’ouverture d’une connexion est rarement coûteuse en temps, et cela permet de sécuriser le système.
Si une procédure REST doit accéder à une variable globale du projet, il est recommandé d’utiliser des Sémaphores. C’est un mécanisme simple à mettre en oeuvre, et qui garantira que deux procédures REST n’accèdent pas en même temps à la même variable.
Précaution importante (quels que soient la technologie REST et le langage de programmation employés) : L’échange de données avec un client REST entraîne souvent l’envoi d’identifiant de la base de données, afin que des requêtes ultérieures puissent être réalisées.
Scénario :
- On renvoie une liste de clients avec leur IDs respectifs :
- Jean Valjean, ID 512
- Esmeralda, ID 234
- Causette, ID 235
- Un service REST permet de récupérer les informations d’un client. Exemple : http://monserveur.com/client/235
- Rien n’empêche un utilisateur malin d’essayer les IDs 236, 237, 238 pour récupérer des données auxquelles il n’a probablement pas accès, voire d’essayer de les effacer.
Pour éviter ce genre de fuite des données :
- Ne jamais transmettre dans un résultat un ID automatique de la base de données. Préférer soit un chiffrement de l’identifiant (fonctions Crypte) de WinDev soit l’ajout dans votre base de données d’une colonne de type UUID (ou GUID) qui sera utilisée pour les échanges REST.
- Vérifier systématiquement que l’utilisateur courant a un droit d’accès à la donnée qu’il souhaite récupérer (il a pu usurper un ID de base de données sur la session d’un autre utilisateur, ou bien son droits d’accès à la donnée à été révoqué entre temps).
- Vérifier également que l’utilisateur a un droit de modification en cas de requête en modification (ce n’est pas parce-qu’on peut lire une donnée qu’on a le droit de l’écrire ou de la supprimer).
- En règle générale, considérer tout accès et toute donnée extérieurs comme suspects. La paranoïa dans ce domaine est généralement une bonne compagne de la sécurité.
L’AGL (Atelier de Génie Logiciel) WinDev est reconnu pour sa facilité d’utilisation et sa polyvalence dans le développement logiciel. Lorsqu’il est associé aux Web Services REST (Representational State Transfer), il offre une synergie puissante qui ouvre de nombreuses portes dans le monde du développement informatique.
Tout d’abord, WinDev simplifie le processus de création d’applications en offrant une interface conviviale et des fonctionnalités visuelles intuitives. Sa capacité à concevoir rapidement des applications performantes pour des plates-formes variées en fait un choix de prédilection pour de nombreux développeurs. L’intégration native des Web Services REST dans l’environnement de développement WinDev constitue un atout majeur.
Les Web Services REST, quant à eux, permettent une communication simple et efficace entre différentes applications, qu’elles soient sur le cloud ou sur des serveurs locaux. Leur architecture orientée ressources offre une flexibilité remarquable, permettant aux développeurs de créer des services web modulaires, faciles à mettre à l’échelle et à maintenir. L’utilisation des standards HTTP et JSON rend les Web Services REST compatibles avec une multitude de langages de programmation et de plateformes, assurant ainsi une interopérabilité maximale.
Lorsqu’ils sont combinés, WinDev et les Web Services REST offrent une symbiose harmonieuse. WinDev facilite la création d’applications qui peuvent exploiter pleinement les fonctionnalités des Web Services REST. L’intégration de ces services dans des applications WinDev permet une interaction transparente avec des données distantes, offrant une expérience utilisateur fluide et réactive.
De plus, cette combinaison offre une grande flexibilité dans le déploiement des applications. Les applications WinDev peuvent facilement accéder et utiliser les fonctionnalités des Web Services REST, qu’elles soient hébergées localement ou sur le cloud, offrant ainsi une portabilité et une accessibilité accrues.
En résumé, l’utilisation conjointe de WinDev et des Web Services REST représente un avantage majeur dans le développement logiciel moderne. Elle offre une facilité de création, une interopérabilité étendue, une flexibilité de déploiement et une expérience utilisateur optimale, faisant de cette combinaison un choix judicieux pour les développeurs cherchant à créer des applications robustes et performantes.