Web Services et PHP
          31/01/2007



    François-Xavier Bois
    fxbois@kernix.com
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
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
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’,…)
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
Inconvénients
• Plus lourds au niveau ressources.
• Plus complexes à mettre en œuvre.
• Nécessité de disposer des bonnes
  extensions, librairies.
Les types de WS
Différents types de WS peuvent être mis en
œuvre (par ordre croissant de complexité) :
• REST
• XML-RPC
• SOAP
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.
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>
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.
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.
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
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.
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
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
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.
Serveur avec WSDL
• Nous utilisons maintenant le fichier WSDL

 Fichiers :
 /tp3/centrale/services2.php
 /tp3/centrale/centrale.wsdl
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
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
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
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
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.
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.
Questions / Réponses

    A vous la parole

Presentation

  • 1.
    Web Services etPHP 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 lourdsau niveau ressources. • Plus complexes à mettre en œuvre. • Nécessité de disposer des bonnes extensions, librairies.
  • 7.
    Les types deWS Différents types de WS peuvent être mis en œuvre (par ordre croissant de complexité) : • REST • XML-RPC • SOAP
  • 8.
    REST • La requêtedu 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 messagesau 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 del’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 entre2 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 Leprincipe 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 fichierWSDL • 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 Uneoption 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 erreursse 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 WSfont 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 lesWS 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.
  • 24.
    Questions / Réponses A vous la parole