1. Web Services et PHP
31/01/2007
François-Xavier Bois
fxbois@kernix.com
2. Bienvenue
• François-Xavier Bois
• Fondateur de la société KerniX Software
http://www.kernix.com
• Auteur de « PHP5, le guide complet » et
« PHP5 et MySQL5 » chez MicroApplication
3. Les Web Services
• Mise à disposition de ressources par un
site web.
• Les ressources :
– Données
ex: traduction d’un mot
– Actions
ex: ajout d’une traduction
4. Avant les WS
• Chaque projet inventait sa norme pour
mettre à disposition des données
ex :
“rouge","bleu",“vert“
="01234",“aaaa""bb",ccc
aaa bb ccc
• Aucune formalisation des codes retours
ex: un code de status HTTP, une valeur dans la page de
retour (1, ‘OK’,…)
5. Avantages
• Normalisation
– Format du message (souvent XML).
– Façon d’appeler les méthodes.
– Gestion des erreurs.
• Indépendance vis-à-vis :
– De l’architecture
– Du système d’exploitation : Linux, Solaris, Win
– Du serveur web : Apache, IIS
– Du langage de programmation : PHP, Java, Python, Ruby
6. Inconvénients
• Plus lourds au niveau ressources.
• Plus complexes à mettre en œuvre.
• Nécessité de disposer des bonnes
extensions, librairies.
7. Les types de WS
Différents types de WS peuvent être mis en
œuvre (par ordre croissant de complexité) :
• REST
• XML-RPC
• SOAP
8. REST
• La requête du client prend la forme
d’une URL
http://api.search.yahoo.com/WebSearchService/V1/webSearch?ap
pid=sl2007&query=persimmon&results=2&output=json
http://developer.yahooapis.com/TimeService/V1/getTime?appid=
sl2007
• La réponse peut prendre différentes
formes : XML, JSON, YAML, TEXT.
• Oblige le client à « parser » la réponse.
9. XML-RPC
Requêtes (du client) et réponses (du serveur)
sont au format XML.
Requête (méthode POST) Réponse du serveur
POST /rpchandler HTTP/1.1 200 OK
HTTP/1.0 User-Agent: AcmeXMLRPC/1.0 Date: Sun, 14 Jan 2007 12:08:58 GMT
Host: mon.server.com Server: Apache/2.0.12 (Unix) Debian/GNU PHP/5.2.0
Content-Type: text/xml Connection: close
Content-Length: 165 Content-Type: text/xml
Content-length: 128
<?xml version="1.0"?>
<methodCall> <?xml version="1.0"?>
<methodName> <methodResponse>
traduitMot <params>
</methodName> <param>
<params> <value><string>red</string></value>
<param> </param>
<value><string>rouge</string></value> </params>
</param> </methodResponse>
</params>
</methodCall>
10. SOAP
• Des messages au format XML sont échangés
entre le client et le serveur.
• La méthode POST est utilisée pour la requête
du client.
• Ces messages (organisés sous forme
d’enveloppes) sont plus complexes qu’en XML-
RPC.
• Un fichier WSDL décrit les méthodes (+
arguments) proposées par le service. Il s’agit
également d’un fichier XML.
11. PHP et WS
• PHP4 n’est pas une version optimale pour
la gestion des WS.
• PHP5 dispose en interne de tous les
composants permettant de construire ou
de consommer des WS. Tous les types de
WS sont gérés par PHP.
12. Environnement
• Ajout de l’extension SOAP
PHP settings > PHP extensions > Add extension >
php_soap.dll
• Contrôle de la présence de l’extension
Localhost > phpinfo()
• Création de la base
http://localhost/tp3/install.php
13. Notre Exemple
Interaction entre 2 sites
1. Un site e-commerce permettant de réserver des places de
concert :
Répertoire : /tp3/boutique
Lien : http://localhost/tp3/boutique
2. Une centrale de réservation permettant de contrôler l’état d’un
concert
Répertoire : /tp3/centrale
Base de données : centrale
URL : http://localhost/tp3/centrale
Type de Web Service : SOAP.
14. Consommation d’un WS
• Nous souhaitons obtenir des informations
sur le prochain concert de « U2 »
• Nous utilisons le service getConcert fourni
par le site « Centrale »
Fichier : /tp3/boutique/fiche.php
URL : http://localhost/tp3/boutique
15. Création d’un WS
Le principe consiste à créer une classe
« modèle » et à la transmettre à la classe
SoapServer qui se chargera de rendre
disponible ses méthodes en respectant le
protocole SOAP.
Fichier : /tp3/centrale/services.php
16. Utilisation du fichier WSDL
• Permet de décrire les interfaces des
méthodes : nom + attributs.
• Son utilisation allège le code associé aux
clients.
• Le service s’auto décrit.
• Il constitue une forme de contrat entre le
client et le serveur (l’implémentation
importe peu).
• Le format est hélas assez complexe.
17. Serveur avec WSDL
• Nous utilisons maintenant le fichier WSDL
Fichiers :
/tp3/centrale/services2.php
/tp3/centrale/centrale.wsdl
18. Client avec WSDL
• Le code est plus court et plus lisible.
• Nous sommes maintenant en mesure de
lister les différents services proposés par
le site « Centrale ».
Fichier : /tp3/boutique/fiche2.php
URL : http://localhost/tp3/boutique/fiche2.php?groupe=u2
19. Espionnage des échanges
Une option permet de tracer les messages
échangés entre le client et le serveur.
Fichier : /tp3/boutique/debug.php
URL : http://localhost/tp3/boutique/debug.php?groupe=u2
20. Gestion d’erreur
Les erreurs se gèrent en émettant des Exceptions
de type SoapFault au sein du serveur et en les
« attrapant » au sein du client.
- Fichiers :
/tp3/boutique/fiche3.php
/tp3/centrale/services3.php
/tp3/centrale/centrale2.php
- URL :
http://localhost/tp3/boutique/fiche3.php?groupe=u2zz
21. Les WS aujourd’hui
• Tous les « grands » du WEB en proposent
– Google : Blogger, Maps, AdWords, Checkout,
Calendar
– Yahoo : Moteur de recherche, Traffic
– Flicker : gestion de photos
– eBay
– Amazon : possibilité d’externaliser
intégralement une boutique
22. WEB 2.0
Les WS font partie de la révolution WEB2.0
en :
• permettant au site d’interagir (Mash-
Ups),
• en mettant à disposition des données
exploitables facilement par des
Javascripts.
23. Conclusion
En utilisant les WS vous :
- gagnez du temps (auto description des
fonctionnalités du site),
- êtes compatible avec un maximum de
plateforme,
- permettez à des partenaires de travailler
avec vous et élargissez votre réseau.