PHP REST SQL, Web Services for dummies
Je vous passe l’ensemble de la propagande habituelle sur les Web Services ( l’architecture SOA, Annuaires de services, SOAP, etc…).
Pour ma part, je pense qu’il existe deux grandes familles de WebServices :
- Contrôle : l’éxécution d’action
- Données : la mise à disposition d’informations
Pour la première famille, l’ensemble des techniques disponibles (SOAP, WSDL, UDDI) couvrent les besoins.
Quant à la seconde famille, je trouve que ces techniques sont bien trop complexes à mettre en oeuvre.
Problèmatique
Imaginons que vous avez besoin de mettre à disposition le contenu d’une base de données relationnelles ( liste de contacts, tickets, commandes en cours, etc. ) à l’aide d’un Service Web.
1/ Solution envisagée : le développement d’une Interface SOAP spécifique à votre problèmatique
Le développement de celle-ci sera long, car il vous faudra :
- désigner l’interface
- développer les composants
- tester le fonctionnement
- écrire la documentation
2/ Solution envisagée : adopter la méthodologie REST
J’ai découvert cette méthodologie suite à un article du journal du Net : SOAP, XML-RPC et EST : différences et intérêts
Elle est spécifiée dans le mémoire de Roy Thomas Fielding : Architectural Styles and the Design of Network-based Software Architectures
Ce qui est remarquable dans cette méthodologie, c’est :
- sa simplicité
- la réutilisation de protocoles standards éxistants du web
- la possiblité de mettre en cache le résultat de la requête de manière transparente.
Le project PHP REST SQL
Par la suite, j’ai découvert le projet PHP REST SQL, celui-ci permet de mettre à disposition le contenu d’une base de données MySQL via une interface Web.
Ce projet consiste en une classe, qui s’interface avec une base de données MySQL et qui permet à l’aide de requêtes HTTP de récupèrer les données de la base, créer, modifier et supprimer des champs.
Ma contribution : abstraction par rapport aux bases de données
Actuellement, le projet ne supporte que les bases de type MySQL, j’ai donc réécrit la classe pour prendre en comptes toutes les bases de données supportées par le module PEAR MDB ( MySQL, PostGreSQL, Oracle, Frontbase, Querysim, Interbase/Firebird, MSSQL et SQLite).
J’ai testé son fonctionnement avec 3 bases (MySQL, PostGreSQL et SQLite).
Cette contribution est disponible sur SourceForge : database abstraction (MySQL, Postgres and SQLite Support).
Installation et Configuration
Installer et mettre en oeuvre le classe, il suffit de :
1/ Télécharger la classe :
$ wget 'http://sourceforge.net/tracker/download.php?group_id=126371&atid=705494&file_id=180054&aid=1498241' -O php_rest_sql.tar.gz
2/ L’extracter dans votre arborescence Web :
tar xzvf php_rest_sql.tar.gz -C /var/www
3/ Editer le fichier de configuration phprestsql.ini.
4/ Editer un fichier .htacces et activer le module rewrite dans Apache.
Et voila !
Vous pouvez accéder au contenu de votre base de données directement à l’aide d’un navigateur.
Il ne vous reste plus qu’à écrire un client pour accéder aux données, à l’aide de la bibilothèque PHP CURL par exemple.
Conclusion
J’ai soumis mon patch à Paul James, l’auteur du projet et proposé l’idée de transformer celui-ci en module Pear. Il faut savoir que l’auteur a développé le project Tonic autour du même concept.
Mais il s’agit d’un veritable framework de développement web et qui par conséquent est beaucoup plus intrusif.
bonjour Christophe,
je suis tomber sur ton site àprés de longues recherches sur la façon d’intégrer à l’aide de php une architecture orientée ressource type RESTful.Je développe en ce moment un projet ambitieux qui j’espère aura sa place sur la toile.
N’étant pas un spécialiste du développement, car issue du réseaux/télécom, j’aimerais si cela est possible, avoir une ébauche d’un client utilisant l’interface rest.car j’aimerais intégrer un web service de ce type qui ma séduit de par sa simplicité.
Merci d’avance.
cldt krim