LightREST V3 marque une évolution majeure : plus ouvertplus flexibleplus sécurisé, et plus robuste en production.
Cette page récapitule les nouveautés principales et surtout ce qu’elles apportent concrètement au quotidien.


LightREST devient open source

Le code intégral du composant WinDev® est livré, ainsi que celui du moteur REST développé en GO (choisi pour ses performances). Pour être utile à un maximum de WinDeveloppeurs, le projet LightREST est livré en WinDev® 25, évidemment migrable dans les versions ultérieures. Le projet GO est compilé en version 1.25.5.

Le code source de LightREST est diffusé sous licence MIT, donc sans aucune restriction de modification ni aucune obligation de diffusion. Evidemment, toutes les suggestions de corrections, évolutions, améliorations proposées par la communauté des développeurs seront les bienvenues !


Multi-instances 

Possibilité d’instancier plusieurs serveurs LightREST dans un même exécutable (sur des ports différents) :


Hooks before / after

Les hooks sont de puissants mécanismes d’interception d’événements clés : réception, authentification, avant exécution, après exécution, avant envoi.
Un hook peut refuser une requête, compléter ou remplacer une réponse (corps, entêtes, …) et :

Plus de détails sur le fonctionnement des Hooks ICI:

Bon réflexe : utiliser les hooks comme “pipeline transverse”, et garder les routes centrées sur le métier.


ID Ciphering

Ajout d’un mécanisme de chiffrement des IDs (ex: IDs BDD) pour éviter qu’ils soient prévisibles/exploitables.

Important : l’ID Ciphering est une défense en profondeur. Il ne remplace pas l’auth/ACL : il la complète.


Optimisations

Améliorations internes du moteur LightREST : variables atomiques (thread safety), maps concurrentes, mutex, channels synchronisés, time-bounds. Traitements Interne du moteur jusqu’à 50% plus rapides.


Sécurisation renforcée

Renforcement de l’isolation entre traitements parallèles (compartimentation des exécutions).


Windows 32 bits

Le composant fonctionne désormais en Windows 32 bits.


Multi OS

Version disponibles :

Pourquoi utiliser la version du composant correspondant à l’OS cible ?


MaxRequests 

Définition d’un maximum de requêtes simultanées en exécution pour éviter l’overflow.


CustomData serveur & route

Des données propres au serveur et/ou à la route sont transmises automatiquement à la requête (lrRequest). CustomData est implémenté dans lrServer et lrRoute et transmis automatiquement aux handlers REST avec chaque requête. Evite par exemple de recharger à chaque requête des éléments globaux, des paramètres, …, et ainsi d’optimiser le temps d’exécution.

Bon réflexe : y stocker des éléments susceptibles de causer des collisions entre des requêtes concurrentes (pas besoin de sémaphores ou sections critiques)


WinDevErrorDetails 

Contrôle du niveau d’information renvoyé au client en cas d’erreur.


Request timeout (global ou par route)

Définition un timeout : – pour tout le serveur, – et/ou spécifique à une route (traitement long).


Taille du composant

Le composant V3 est plus compact qu’en V2, d’environ 40% :


Read / Write timeout 

Détection de la fermeture de connexion HTTP côté client lors de la lecture/écriture. Si le client est parti, le traitement est annulé automatiquement.


Idle State


Objet lrRoute 

Le nouvel objet lrRoute permet de décrire les routes de façon plus riche.


Conclusion

Avec la V3, LightREST devient :