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 (Wlangage® + moteur REST Go)

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 : plusieurs serveurs LightREST dans un même exécutable

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


Hooks before / after (et événements d’exécution)

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/remplacer une réponse, etc.

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 : chiffrement/déchiffrement d’identifiants

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 : moteur jusqu’à +50% plus rapide

Améliorations internes du moteur LightREST : variables atomiques (thread safety), maps concurrentes, mutex, channels synchronisés, time-bounds.


Sécurisation renforcée des threads : compartimentation des traitements

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


LightREST disponible sous Windows 32 bits

Le composant fonctionne désormais en Windows 32 bits.


Composant disponible en plusieurs versions

Version disponibles : – Complète (multi-OS), – Windows 64 – Linux – Windows 32


MaxRequests : nombre maximal de requêtes en cours

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


CustomData serveur & route (transmis automatiquement au handler REST)

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 : niveau de détail des erreurs

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 réduite de ~40%

Le composant est plus compact qu’en V2.


Read / Write timeout : détection de connexions fermées

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 : description plus complète des routes

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


Conclusion

Avec la V3, LightREST devient :