Rest4 : Framework RESTful en PHP/MySQL
Rest4 est un framework RESTful, à la base de tous nos services web. Ce dernier est construit pour respecter les principes RESTful qui font le succès de nombreux services web de part le monde.
Qu'est que REST ?
REST (Representational State Transfert) est un style d'architecture pour services web qui respecte la nature du web. Plus particulièrement la spécification HTTP et la dimension hypermédia qu'introduit le web dans les systèmes d'information en général.
Les avantages de ce style sont très nombreux :
- séparation entre l'interface et le service web : changer l'un ou l'autre n'a pas d'impact sur le second. Plusieurs interfaces utilisateurs peuvent donc exploiter le service web (HTML5/CSS3, applications Android/iOS, applications desktop traditionnelles, applications XULRunner, extensions pour navigateur web etc...).
- continuation du service même avec une connexion instable : la nature idempotente de la plupart des verbes HTTP permet d'effectuer plusieurs tentatives pour une même opération sans effet de bord.
- interface HTTP standard : HTTP est bien connu de tous et est donc favorable à la compréhension rapide par tout autre développeur. De plus, le goulet d'étranglement que représente l'interface uniforme REST est favorable à la rédaction de test unitaires simples et efficaces pour maintenir la qualité de l'application. L'Extremme Programming et le développement Agile sont donc grandement facilités.
- mise à profit des mécanismes inhérents à HTTP (applications plus scalables grâce au routage des requêtes, mise à profit des proxy et cache HTTP pour les requêtes fréquentes... etc).
Pourquoi REST4 ?
Plus qu'un framework, REST4 est une surcouche des principes RESTful. Il apporte deux nouvelles dimensions intéressantes.
Rest4 comme RESTfoR : Pour REST full of REST
Rest4 introduit un nouveau concept simple et novateur à la fois. Dans un service web RESTful, tout élément accessible par les acteurs extérieurs au système est une ressource. Cependant, nous avons rapidement constaté que de nombreuses ressources à rendre disponible sont elles même des combinaisons de ressources.
Par exemple, notre driver Mysql s'adapte automatiquement à chaque table, un peu comme un ORM. La ressource GET/db/my_database/my_table/list.dat?limit=5&start=5 liste le jeu d'entrées de la table my_table à partir de la cinquième jusqu'à la dixième. Pour ce faire, ce driver nécessite de connaître le nombre de champs de la table, leur nature et les liens éventuels que celle-ci possède avec d'autres tables afin de réaliser les jointures nécessaires. C'est pourquoi ce driver fait appel à la ressource GET /db/my_database/_my_table qui lui fourni toutes les informations nécessaires.
Ainsi, ce dernier profite de l'éventuelle mise en cache de cette ressource, des exceptions éventuelles de cette dernière (si la table n'existe pas, l'envoi d'une exception est simplement délégué à la sous-ressource) et de bien d'autres avantages remarquables.
Rest4 introduit donc un Objet RestRessource de haut niveau permettant de subdiviser l'application en modules bénéficiant des principes de REST et de HTTP à l'intérieur même de l'application la rendant plus scalable et optimale.
Une ressource, une URI
Le système de cache, le système d'obtention des droits et de nombreux autres mécanismes sont basés sur l'utilisation de l'URI. Nous avons donc mis un point d'honneur à ce qu'une ressource ne puisse être accessibles que par une et une seule URI. Ainsi, chose peu fréquente en PHP, nous avons développé un système vérifiant non seulement le nom de chaque paramètre (noeuds ou paramètre de la query string), mais aussi leur ordre, leur valeur et leur sens. Par exemple, pour le driver MySQL, la valeur par défaut de limit est 10. Ainsi, une requête du type GET /db/my_database/my_table/list?limit=10 renvoie une erreur (400 The given value for the "limit" parameter is the default value. Remove the parameter to use it's default value).
La résultante de ceci est que l'on ne peut obtenir une représentation d'une ressource que par une et une seule URI. Il est donc impératif de bien comprendre le service web pour l'utiliser, ce qui évite tout problème consécutif à une mauvaise utilisation du service.
REST4 digne fils d'XCMS
Avec le temps, XCMS devrait disparaître, remplacé par une surcouche de Rest4 rendant ainsi tous nos sites web compatibles REST. Mais Rest4 profite énormément des concepts utilisés par XCMS. Tout d'abord, le système de template reste le même. Le format des fichiers de langue a été repris et amélioré. Rest4 hérite donc des multiples avantages d'XCMS comme la portabilité dans d'autres langages de programmation.
XCMS deviendra finalement un simple driver REST permettant de créer des sites Web. Mais cela reste à venir, XCMS dans sa forme actuelle a encore de beaux jours devant lui.
En conclusion
Rest4 est la solution ultime pour la création de services web (progiciels, applications web, intranet). Couplé à notre interface utilisateur HTML5/CCS3, il n'a jamais été aussi simple de réaliser des applications web pérennes et appréciées des utilisateurs. Plusieurs applications sont actuellement en cours de réalisation, n'hésitez pas à nous contacter pour profiter de nos compétences et doper votre système d'information.