LightREST

Composant Serveur API REST pour WinDev®
Léger.
Rapide.
Gratuit.
Sans licence Serveur.

LightREST est destiné aux développeurs WinDev® souhaitant créer un Web Service REST (REpresentational State Transfer).

Contrairement au système proposé nativement par WinDev®, LightREST ne nécessite ni l’installation d’un serveur Web (IIS, Apache, …) ni l’acquisition et les mises à jour d’un serveur WebDev®. Les requêtes API REST sont exécutées directement par votre application WinDev® sans subir un traitement chronophage par le serveur Web et le serveur WebDev®. Un serveur LightREST écoute lui-même l’interface réseau et répond directement aux requêtes REST, sans aucun intermédiaire.

Disponible sous la forme d’un composant 64 bits compatible avec toutes les versions WinDev® à partir de la V25, LightREST a été développé et utilisé pendant des années par la société CODE LINE, qui se fait un plaisir de le mettre à la disposition de la communauté des développeurs.

LightREST fonctionne en mode HTTP et HTTPS, et intègre un générateur automatique de certificat SSL 2048 bits ce qui permet de bénéficier du chiffrage HTTPS sans acquérir un certificat. Evidemment, il reste possible d’utiliser un certificat SSL existant, signé par une autorité reconnue. Depuis la version 2.7 LightREST peut également générer vos certificats Let’s Encrypt, et les renouveler automatiquement !

Il peut fonctionner soit sous la forme d’un exécutable “standard” (fenêtré ou pas), ou en tant que service, que ce soit sous Windows ou sous Linux.

LightREST permet de déployer un serveur API REST en quelques lignes de code w-langage à la portée de tout développeur, sans paramétrage fastidieux (voir ICI le mécanisme natif de WinDev®, bon voyage…) :

Démarrage du serveur LightREST :

oServer	est lrServer
bOK	est booléen
cErr	est chaîne

//Création de la route /getdata qui appelera la fonction testGET
oServer:AddRoute("/getdata/{nb}", lrServer::MethodGET, testGET)

//On va écouter le port 9000
oServer:IPAndPort = "0.0.0.0:9000"

//C'est parti mon Kiki
(bOK, cErr) = oServer:Start()
SI pas bOK ALORS
    Info("Erreur lors du démarrage du serveur REST", cErr)
FIN

Voilà, nous avons un serveur API REST qui écoute sur le port 9000 (tel que paramétré avec l’objet lrServer) et prêt à exécuter du code lorsque la route /getdata est appelée.


La fonction testGET est définie comme ci-dessous. Elle utilise les objets lrRequest (qui contient la requête API REST reçue) et lrResponse (qui sera utilisé pour renvoyer le résultat de la requête) :

PROCÉDURE testGET(pReq est lrRequest) : lrResponse

oResponse est lrResponse
eNb       est entier

stResponse:Body = "Pong "+HeureSys()

//On récupère la variable nb dans la Route REST
eNb = Val(pReq:GetRouteValue["nb"])
POUR i=1 _À_ eNb
    stResponse:Body += [CRLF] + Hasard(1, 1000)
FIN

oResponse:Status      = lrResponse::StatusOK
oResponse:ContentType = lrResponse::ContentTXT
RENVOYER oResponse

Cette fonction va renvoyer “Pong“+l’heure système, et une liste de nb entiers au hasard (nb étant le paramètre passé dans la route).


Un simple appel dans un navigateur Web :

http://127.0.0.1:9000/getdata/10

va renvoyer le résultat suivant :

Pong 03304860
817
805
719
569
75
404
324
1000
701
793

Envie d’en savoir plus sur LightREST ? Consultez le Guide de démarrage et la Documentation.
Jetez également un œil à DataService, un mécanisme permettant d’automatiser la distribution de données au format REST.


L’AGL WinDev est reconnu pour sa puissance et sa polyvalence dans le développement logiciel. En combinant les capacités de WinDev avec l’utilisation de Web Services REST, les développeurs bénéficient d’une synergie exceptionnelle.

Tout d’abord, WinDev offre un environnement de développement intégré (EDI) complet, permettant une conception rapide et efficace d’applications. Sa simplicité d’utilisation et sa richesse fonctionnelle en font un outil de choix pour les développeurs, offrant des fonctionnalités étendues pour la création d’applications professionnelles, desktop ou web.

L’intégration des Web Services REST dans WinDev offre des avantages considérables. Les Web Services REST permettent une communication simple et efficace entre différentes plateformes et applications, favorisant ainsi l’interopérabilité. Cette approche basée sur les standards du web offre une flexibilité inégalée, permettant l’échange de données entre des systèmes hétérogènes de manière sécurisée et scalable.

En utilisant les Web Services REST avec WinDev, les développeurs peuvent tirer parti des fonctionnalités distribuées, améliorant la modularité et la flexibilité des applications. Cette approche favorise également la réutilisabilité du code et la maintenance simplifiée des systèmes, réduisant ainsi les coûts de développement à long terme.

De plus, l’utilisation des API REST facilite l’intégration des applications avec des services tiers, tels que des services cloud, des API externes ou des plateformes de données, ouvrant ainsi de vastes possibilités pour l’expansion et l’enrichissement des fonctionnalités des applications développées avec WinDev.

En résumé, l’association de l’AGL WinDev avec l’utilisation des Web Services REST offre une combinaison puissante pour le développement logiciel, permettant une conception rapide, une interopérabilité étendue, une flexibilité accrue et une intégration transparente avec des services externes, offrant ainsi des solutions logicielles robustes et évolutives pour répondre aux besoins actuels et futurs.”

Cette combinaison peut vraiment être bénéfique dans de nombreux contextes de développement logiciel !


Le composant LightREST est souvent apprécié pour plusieurs raisons. Voici quelques-uns de ses avantages clés :

  1. Facilité d’utilisation : LightREST simplifie la création et la gestion des API REST dans les applications. Ses classes faciles d’usage permettent aux développeurs de mettre en place rapidement des points de terminaison REST sans une courbe d’apprentissage complexe.
  2. Légèreté : Comme son nom l’indique, LightREST est conçu pour être léger. Il offre une solution simplifiée pour la création de Web Services REST sans ajouter de complexité inutile à l’application. Cela peut contribuer à des performances améliorées et à une consommation minimale de ressources.
  3. Rapidité de déploiement : En raison de sa simplicité et de sa légèreté, LightREST permet un déploiement rapide des services. Les développeurs peuvent créer et implémenter des services REST de manière efficace, accélérant ainsi le cycle de développement.
  4. Intégration aisée : LightREST s’intègre généralement bien avec d’autres composants et solutions logicielles, offrant une compatibilité et une interopérabilité élevées avec différentes plates-formes et technologies.
  5. Maintenance simplifiée : Grâce à son approche simplifiée, la maintenance des services créés avec LightREST peut être moins complexe. Les développeurs peuvent facilement comprendre et mettre à jour les points de terminaison REST, facilitant ainsi la gestion à long terme des services.

En somme, le composant LightREST offre une approche légère, simple et conviviale pour la création de Web Services REST, ce qui en fait un choix attrayant pour les développeurs cherchant à implémenter rapidement des fonctionnalités de communication et d’intégration dans leurs applications.


Comment le moteur d’IA ChatGPT explique-t-il les meilleurs performances de WinDev+LightREST par rapport à WinDev+serveur WebDev ?
Voici sa réponse in extenso du 28/03/2025 :

Le composant LightREST pour WinDev, développé par Codeline, permet de créer des serveurs API REST. Il existe également une fonctionnalité native dans WinDev pour la création de serveurs API REST, mais LightREST peut offrir des avantages en termes de performance. Voici quelques éléments qui peuvent expliquer pourquoi LightREST peut être plus performant que la solution native de WinDev.

1. Optimisation des performances réseau
   - LightREST est spécialement conçu pour gérer des APIs REST de manière légère et optimisée. Cela signifie qu'il est probablement conçu pour minimiser les latences et optimiser la gestion des requêtes HTTP. Cela peut être particulièrement important lorsqu'il y a un grand nombre de requêtes simultanées ou lorsqu'une réponse rapide est requise.
   - Le composant est optimisé pour traiter les requêtes en utilisant un minimum de ressources système (par exemple, mémoire et CPU), ce qui peut améliorer le temps de réponse des API.

2. Simplicité et légèreté
- LightREST met l'accent sur la légèreté et la simplicité de l'implémentation. Il peut ne pas comporter de fonctionnalités complexes ou de couches supplémentaires qui sont souvent présentes dans les solutions natives. Cela peut réduire les overheads (charges supplémentaires) et donc améliorer les performances de traitement.
   - En comparaison, la solution native de WinDev, bien qu'efficace, peut être plus riche en fonctionnalités par défaut, ce qui peut parfois augmenter la consommation de ressources et le temps de traitement.

3. Personnalisation et ajustement fin
   - LightREST permet souvent plus de contrôle sur les paramètres de gestion des requêtes et des réponses. Cela permet aux développeurs de configurer les comportements de mise en cache, de compression ou de gestion des erreurs pour maximiser les performances. Ces paramètres peuvent avoir un impact significatif sur la rapidité des échanges et sur la gestion des charges importantes.
   - La solution native de WinDev, quant à elle, est plus générique et moins flexible, offrant moins de possibilités pour ajuster finement la gestion des ressources et des requêtes.

4. Ciblage spécifique de l'API REST
- LightREST est dédié exclusivement à la création d'APIs REST, ce qui signifie qu'il peut être optimisé pour ce cas d'usage spécifique. Il peut intégrer des pratiques de développement plus efficaces et des optimisations adaptées pour le protocole HTTP et les données JSON, qui sont couramment utilisés dans les APIs REST.
   - WinDev, avec sa solution native, est un environnement de développement plus large et offre une multitude de fonctionnalités, mais cela peut parfois rendre le traitement d'APIs REST moins spécialisé et donc un peu moins performant pour des applications à grande échelle.

5. Gestion des ressources (mémoire, threads)
   - LightREST est conçu pour être particulièrement léger en termes de gestion de mémoire et de threads, ce qui peut aider à gérer un grand nombre de requêtes simultanées tout en optimisant la consommation des ressources.
   - Dans WinDev, bien que performant, le serveur REST natif peut parfois être plus gourmand en ressources ou plus complexe dans la gestion des connexions simultanées, notamment s'il faut gérer un grand nombre de clients ou des requêtes complexes.

6. Mise en cache et compression
- LightREST peut inclure des fonctionnalités avancées pour la mise en cache des réponses API et la compression des données échangées. Ces techniques permettent de réduire la charge sur le serveur et d'améliorer la rapidité des réponses, en particulier pour des données fréquemment demandées.
   - Bien que WinDev offre des mécanismes de cache, la mise en œuvre peut ne pas être aussi poussée ou optimisée de manière aussi spécifique qu'avec un composant comme LightREST.

7. Utilisation de protocoles légers
   - LightREST peut aussi tirer parti de protocoles légers et d'une architecture minimaliste qui permettent de répondre plus rapidement et de manière plus efficace, en se concentrant uniquement sur les fonctionnalités nécessaires à la gestion des APIs REST, sans intégrer de fonctionnalités supplémentaires qui pourraient nuire aux performances.

En résumé :
LightREST peut offrir une meilleure performance que la solution native de WinDev pour plusieurs raisons, notamment son optimisation pour les API REST, son légèreté, son contrôle plus précis des ressources et des performances, ainsi que des fonctionnalités comme la mise en cache et la compression des réponses. Tandis que la solution native de WinDev est plus générique et intégrée dans un environnement plus large, LightREST est spécifiquement conçu pour être rapide, léger et performant dans la gestion des API REST.

Si la performance est un critère essentiel dans ton projet, notamment pour des applications à forte charge, LightREST pourrait donc être une solution plus adaptée que l'option native de WinDev.