Rev 3 | Blame | Last modification | View Log | RSS feed
<?php
/**
* Service Exemple pour apprendre à utiliser les classes JRest
* Encodage en entrée : utf8
* Encodage en sortie : utf8
*
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
* @version $Id$
*/
class ExempleService extends Del {
/**
* Méthode appelée avec une requête de type GET avec une url de la forme
* http://localhost/jrest/ExempleService/
*
* Sert normalement à renvoyer la description des possibilités du service
*
*/
public function getRessource() {
$chaine = '<div>'.
'<p> Bonjour, je suis un service web </p>'.
'<p> Vous pouvez m\'appeler avec les méthodes GET, POST, PUT et DELETE </p>'.
'</div>';
$this->envoyer($chaine);
}
/**
* Méthode appelée avec une requête de type GET avec une url de la forme
* http://localhost/jrest/ExempleService/uid[0]/$uid[1]/ etc...
*
* Sert normalement à ramener un élément précis indiqué par un identifiant
* qui se situe dans l'url après le nom du service
* Le filtrage, le format de retour, les paramètres optionnels ... sont normalement indiqués
* dans le tableau $_GET
* Pour obtenir l'élément 2501 dans le format HTML cela pourrait donner
* http://localhost/jrest/ExempleService/2501?format=HTML
*
* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
*
*/
public function getElement($uid)
{
$format = 'html';
if(isset($_GET['format'])) {
$format = strtolower($_GET['format']);
}
switch ($format) {
case 'html':
$retour = '<div id="element_'.$uid[0].'">'.
'<p> Bonjour, je suis l\'élément '.$uid[0].' </p>'.
'<span> Les filtres demandés sont : </span>'.
'<ul>';
foreach($_GET as $cle => $valeur) {
$retour .= '<li>'.$cle.' = '.$valeur.'</li>';
}
$retour .= '</ul>'.
'</div>';
$mime = 'text/html';
break;
case 'json':
$retour = array('id' => $uid[0],
'message' => 'Bonjour, je suis l\'élément '.$uid[0],
'filtres' => $_GET);
$retour = json_encode($retour);
$mime = 'application/json';
break;
case 'xml':
$retour = '<?xml version="1.0" encoding="utf-8"?>';
$retour .= '<element id="element_'.$uid[0].'"> '.
'<message> Bonjour, je suis l\'élément '.$uid[0].' </message>'.
'<filtres> Les filtres demandés sont : ';
foreach($_GET as $cle => $valeur) {
$retour .= '<filtre>'.$cle.' = '.$valeur.'</filtre>';
}
$retour .= '</filtres>'.
'</element>';
$mime = 'text/xml';
break;
}
$this->envoyer($retour,$mime);
}
/**
* Méthode appelée avec une requête de type PUT, ou bien un POST sans identifiant après le nom
* du service, donc une url de la forme :
* http://localhost/jrest/ExempleService/ + du contenu dans le post
* Cette méthode sert normalement a créer un nouvel élément avec les données fournies en post
*
* @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront de créer l'élement
*/
function createElement($pairs)
{
$chaine = '<div>'.
'<p> Bonjour, vous venez de créer un nouvel élément </p>'.
'<span> Les données suivantes ont été utilisées : </span>'.
'<ul>';
foreach($pairs as $cle => $valeur) {
$chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
}
$chaine .= '</ul>'.
'</div>';
$this->envoyer($chaine);
}
/**
* Méthode appelée avec une requête de type PUT, ou bien un POST avec un identifiant après le nom
* du service, donc une url de la forme :
* http://localhost/jrest/ExempleService/$uid[0] + du contenu dans le post
* Cette méthode sert normalement a modifier un élément existant avec les données fournies
* en post
*
* @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront
* de modifier l'élement indiqué par ce qui suit le nom du service dans l'url
*/
public function updateElement($uid,$pairs)
{
$chaine = '<div>'.
'<p> Bonjour, l\'élément '.$uid[0].' a été modifié </p>'.
'<span> Les données suivantes ont été utilisées : </span>'.
'<ul>';
foreach($pairs as $cle => $valeur) {
$chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
}
$chaine .= '</ul>'.
'</div>';
$this->envoyer($chaine);
}
/**
* Méthode appelée avec une requête de type DELETE, en indiquant l'identifiant de l'élément à supprimer
* ce qui donne une url de la forme :
* http://localhost/jrest/ExempleService/$uid[0]
*
* ATTENTION : Safari ne sais pas envoyer les DELETE donc on triche en faisant un post qui contient
* action=DELETE (les majuscules sont importantes)
* On a donc http://localhost/jrest/ExempleService/$uid[0] + action=DELETE dans le post
*
* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
*/
function deleteElement($uid){
$chaine = '<div>'.
'<p> Bonjour, l\'élément '.$uid[0].' a été supprimé </p>'.
'</div>';
$this->envoyer($chaine);
}
}
?>