25 02 | 2013

Exemple de Web Service REST en PHP

Rédigé par TAVERNIER

Classé dans : PHP sur IBM i

Comment mettre en place un serveur ou un client Web Service de type REST en PHP

REST(REpresentational State Transfer) est un style d’architecture pour les systèmes hypermédia distribués, créé par Roy Fielding en 2000 dans le chapitre 5 de sa thèse de doctorat.
Les contraintes sont les suivantes :
  • Client-Serveur : Les contraintes sont séparées entre le client et le serveur. L'interface utilisateur est séparée de celle du stockage des données. Cela permet aux deux d'évoluer indépendamment.
  • Stateless: Chaque requête d'un client vers un serveur doit contenir toute l'information nécessaire pour permettre au serveur de comprendre la requête, sans avoir à dépendre d'un contexte conservé sur le serveur. Cela libère de nombreuses interactions entre le client et le serveur.
  • Cache : Le serveur envoie une réponse qui donne l'information sur la propension de cette réponse à être mise en cache, comme la fraîcheur, sa date de création, si elle doit être conservée dans le futur. Cela permet à des proxys de décharger les contraintes sur le serveur et aux clients de ne pas faire de requêtes inutiles. Cela permet également d'améliorer les montées en charge des serveurs.
  • Un système hiérarchisé : Les états de l'application sont identifiées par des ressources individuelles. Toute l'information n'est pas envoyée dans une seule ressource unique. Les requêtes/réponses entre le client et le serveur augmentent et donc peut faire baisser les performances d'où l'importance du cache, etc. Le bénéfice est que cela rend beaucoup plus flexible l'évolution du système.

Exemple de serveur:

<?php

header('Content-Type: text/xml; charset=UTF-8');

function double($val)

{

   return $val * 2;

if($_GET['arg']!='')

{

   $value = @call_user_func($_GET['function'], $_GET['arg']); 

   echo "<response><value>".$value."</value></response>"; 

}

else

{

   echo "<response>

            <error>".utf8_encode("Requête Invalide")."</error>

            <function>".$_GET['function']."</function>

            <argument>".$_GET['arg']."</argument>

         </response>";

}

?>

Exemple de client pour ce serveur:

<?php

function double($value)

{

   $url = "http://127.0.0.1/REST/Serveur_REST.php?function=double&arg=";

   $url.=$value;

   $xml= simplexml_load_file($url);

   if(isset($xml->value)) return $xml->value;

   else return utf8_decode($xml->error);

}  

 

for($i=0; $i<=10; $i++)

{

   echo double($i)."<br/>";

}

?>

 

 

Il est aussi possible de mettre en place la réécriture d'url pour transformer:

$url = "http://127.0.0.1/REST/Serveur_REST.php?function=double&arg=".$value;

en

$url = http://127.0.0.1/REST/Serveur/double/.$value;

 

Vous avez des questions ? Des remarques ? N'hésitez pas à nous contacter en cliquant ici : Notos, votre expert PHP sur IBMi

Les commentaires sont fermés.

Qui sommes-nous ?

  • Notos, expert IBMi (AS/400) et spécialiste de l’informatisation des PME/PMI est le partenaire privilégié des entreprises qui veulent moderniser leur Informatique.
  • En savoir plus

Archives

Derniers commentaires