1 |
aurelien |
1 |
<?php
|
|
|
2 |
/**
|
|
|
3 |
* Service Exemple pour apprendre à utiliser les classes JRest
|
|
|
4 |
* Encodage en entrée : utf8
|
|
|
5 |
* Encodage en sortie : utf8
|
|
|
6 |
*
|
|
|
7 |
* @author Aurélien PERONNET <aurelien@tela-botanica.org>
|
|
|
8 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
|
|
9 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
|
|
10 |
* @version $Id$
|
|
|
11 |
*/
|
|
|
12 |
class ExempleService extends Del {
|
|
|
13 |
|
|
|
14 |
/**
|
|
|
15 |
* Méthode appelée avec une requête de type GET avec une url de la forme
|
|
|
16 |
* http://localhost/jrest/ExempleService/
|
|
|
17 |
*
|
|
|
18 |
* Sert normalement à renvoyer la description des possibilités du service
|
|
|
19 |
*
|
|
|
20 |
*/
|
|
|
21 |
public function getRessource() {
|
|
|
22 |
$chaine = '<div>'.
|
|
|
23 |
'<p> Bonjour, je suis un service web </p>'.
|
|
|
24 |
'<p> Vous pouvez m\'appeler avec les méthodes GET, POST, PUT et DELETE </p>'.
|
|
|
25 |
'</div>';
|
|
|
26 |
|
|
|
27 |
$this->envoyer($chaine);
|
|
|
28 |
}
|
|
|
29 |
|
|
|
30 |
/**
|
|
|
31 |
* Méthode appelée avec une requête de type GET avec une url de la forme
|
|
|
32 |
* http://localhost/jrest/ExempleService/uid[0]/$uid[1]/ etc...
|
|
|
33 |
*
|
|
|
34 |
* Sert normalement à ramener un élément précis indiqué par un identifiant
|
|
|
35 |
* qui se situe dans l'url après le nom du service
|
|
|
36 |
* Le filtrage, le format de retour, les paramètres optionnels ... sont normalement indiqués
|
|
|
37 |
* dans le tableau $_GET
|
|
|
38 |
* Pour obtenir l'élément 2501 dans le format HTML cela pourrait donner
|
|
|
39 |
* http://localhost/jrest/ExempleService/2501?format=HTML
|
|
|
40 |
*
|
|
|
41 |
* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
|
|
|
42 |
*
|
|
|
43 |
*/
|
|
|
44 |
public function getElement($uid)
|
3 |
aurelien |
45 |
{
|
|
|
46 |
$format = 'html';
|
|
|
47 |
|
|
|
48 |
if(isset($_GET['format'])) {
|
|
|
49 |
$format = strtolower($_GET['format']);
|
|
|
50 |
}
|
|
|
51 |
|
|
|
52 |
switch ($format) {
|
|
|
53 |
|
|
|
54 |
case 'html':
|
|
|
55 |
$retour = '<div id="element_'.$uid[0].'">'.
|
|
|
56 |
'<p> Bonjour, je suis l\'élément '.$uid[0].' </p>'.
|
|
|
57 |
'<span> Les filtres demandés sont : </span>'.
|
|
|
58 |
'<ul>';
|
|
|
59 |
foreach($_GET as $cle => $valeur) {
|
|
|
60 |
$retour .= '<li>'.$cle.' = '.$valeur.'</li>';
|
|
|
61 |
}
|
|
|
62 |
$retour .= '</ul>'.
|
|
|
63 |
'</div>';
|
|
|
64 |
|
|
|
65 |
$mime = 'text/html';
|
|
|
66 |
break;
|
|
|
67 |
|
|
|
68 |
case 'json':
|
|
|
69 |
$retour = array('id' => $uid[0],
|
|
|
70 |
'message' => 'Bonjour, je suis l\'élément '.$uid[0],
|
|
|
71 |
'filtres' => $_GET);
|
|
|
72 |
$retour = json_encode($retour);
|
|
|
73 |
$mime = 'application/json';
|
|
|
74 |
break;
|
|
|
75 |
|
|
|
76 |
case 'xml':
|
|
|
77 |
|
|
|
78 |
$retour = '<?xml version="1.0" encoding="utf-8"?>';
|
|
|
79 |
$retour .= '<element id="element_'.$uid[0].'"> '.
|
|
|
80 |
'<message> Bonjour, je suis l\'élément '.$uid[0].' </message>'.
|
|
|
81 |
'<filtres> Les filtres demandés sont : ';
|
|
|
82 |
foreach($_GET as $cle => $valeur) {
|
|
|
83 |
$retour .= '<filtre>'.$cle.' = '.$valeur.'</filtre>';
|
|
|
84 |
}
|
|
|
85 |
$retour .= '</filtres>'.
|
|
|
86 |
'</element>';
|
|
|
87 |
|
|
|
88 |
$mime = 'text/xml';
|
|
|
89 |
break;
|
|
|
90 |
}
|
1 |
aurelien |
91 |
|
3 |
aurelien |
92 |
$this->envoyer($retour,$mime);
|
1 |
aurelien |
93 |
}
|
|
|
94 |
|
|
|
95 |
/**
|
|
|
96 |
* Méthode appelée avec une requête de type PUT, ou bien un POST sans identifiant après le nom
|
|
|
97 |
* du service, donc une url de la forme :
|
|
|
98 |
* http://localhost/jrest/ExempleService/ + du contenu dans le post
|
|
|
99 |
* Cette méthode sert normalement a créer un nouvel élément avec les données fournies en post
|
|
|
100 |
*
|
|
|
101 |
* @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront de créer l'élement
|
|
|
102 |
*/
|
|
|
103 |
function createElement($pairs)
|
|
|
104 |
{
|
|
|
105 |
$chaine = '<div>'.
|
|
|
106 |
'<p> Bonjour, vous venez de créer un nouvel élément </p>'.
|
|
|
107 |
'<span> Les données suivantes ont été utilisées : </span>'.
|
|
|
108 |
'<ul>';
|
|
|
109 |
foreach($pairs as $cle => $valeur) {
|
|
|
110 |
$chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
|
|
|
111 |
}
|
|
|
112 |
$chaine .= '</ul>'.
|
|
|
113 |
'</div>';
|
|
|
114 |
|
|
|
115 |
$this->envoyer($chaine);
|
|
|
116 |
}
|
|
|
117 |
|
|
|
118 |
/**
|
|
|
119 |
* Méthode appelée avec une requête de type PUT, ou bien un POST avec un identifiant après le nom
|
|
|
120 |
* du service, donc une url de la forme :
|
|
|
121 |
* http://localhost/jrest/ExempleService/$uid[0] + du contenu dans le post
|
|
|
122 |
* Cette méthode sert normalement a modifier un élément existant avec les données fournies
|
|
|
123 |
* en post
|
|
|
124 |
*
|
|
|
125 |
* @param array $pairs Un tableau contenant les valeurs passées dans le post qui permettront
|
|
|
126 |
* de modifier l'élement indiqué par ce qui suit le nom du service dans l'url
|
|
|
127 |
*/
|
|
|
128 |
public function updateElement($uid,$pairs)
|
|
|
129 |
{
|
|
|
130 |
$chaine = '<div>'.
|
|
|
131 |
'<p> Bonjour, l\'élément '.$uid[0].' a été modifié </p>'.
|
|
|
132 |
'<span> Les données suivantes ont été utilisées : </span>'.
|
|
|
133 |
'<ul>';
|
|
|
134 |
foreach($pairs as $cle => $valeur) {
|
|
|
135 |
$chaine .= '<li>'.$cle.' = '.$valeur.'</li>';
|
|
|
136 |
}
|
|
|
137 |
$chaine .= '</ul>'.
|
|
|
138 |
'</div>';
|
|
|
139 |
|
|
|
140 |
$this->envoyer($chaine);
|
|
|
141 |
}
|
|
|
142 |
|
|
|
143 |
/**
|
|
|
144 |
* Méthode appelée avec une requête de type DELETE, en indiquant l'identifiant de l'élément à supprimer
|
|
|
145 |
* ce qui donne une url de la forme :
|
|
|
146 |
* http://localhost/jrest/ExempleService/$uid[0]
|
|
|
147 |
*
|
|
|
148 |
* ATTENTION : Safari ne sais pas envoyer les DELETE donc on triche en faisant un post qui contient
|
|
|
149 |
* action=DELETE (les majuscules sont importantes)
|
|
|
150 |
* On a donc http://localhost/jrest/ExempleService/$uid[0] + action=DELETE dans le post
|
|
|
151 |
*
|
|
|
152 |
* @param $uid un tableau contenant les élements passés dans l'url après le nom du service
|
|
|
153 |
*/
|
|
|
154 |
function deleteElement($uid){
|
|
|
155 |
|
|
|
156 |
$chaine = '<div>'.
|
|
|
157 |
'<p> Bonjour, l\'élément '.$uid[0].' a été supprimé </p>'.
|
|
|
158 |
'</div>';
|
|
|
159 |
|
|
|
160 |
$this->envoyer($chaine);
|
|
|
161 |
}
|
|
|
162 |
}
|
|
|
163 |
?>
|