Deprecated: Array and string offset access syntax with curly braces is deprecated in /home/unareil/www/wiki/inc/init.php on line 557
restler [Wiki Unareil]

Outils pour utilisateurs

Outils du site


restler

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
restler [2019/05/31 22:30]
unareil
restler [2019/06/03 15:30] (Version actuelle)
unareil Problème de majuscule
Ligne 1: Ligne 1:
 ====== Créer votre propre API REST avec [[Restler]] ====== ====== Créer votre propre API REST avec [[Restler]] ======
  
-Ce tutoriel utilise le programme open source [[Restler 3.0 de Luracast]] pour créer une API REST. +Ce tutoriel utilise le programme open source [[Restler 3.0 de Luracast]] pour créer une API REST
 + 
 +Détail de l'​installation de Restler sur Debian GNU/Linux 9 (stretch) 64 bits équipé d'un serveur LAMP [[installation Restler|ici]]
  
 Commençons par quelque chose de simple : nous allons créer une classe Dis.php qui quand elle sera appelé renverra bonjour suivi du paramètre passer à l'URL. Commençons par quelque chose de simple : nous allons créer une classe Dis.php qui quand elle sera appelé renverra bonjour suivi du paramètre passer à l'URL.
  
 +<​code>​
 class Dis { class Dis {
- 
 function bonjour($par='​le monde'​) { function bonjour($par='​le monde'​) {
- 
 return "​Bonjour $par!";​ return "​Bonjour $par!";​
- 
 } }
- 
 } }
 +</​code>​
  
 Maintenant, nous sommes prêt à construire l'​index pour le script de notre API. Maintenant, nous sommes prêt à construire l'​index pour le script de notre API.
 Commençons par télécharger le code Restler et à indiquer qu'il est requis dans notre page d'​index. ​ Commençons par télécharger le code Restler et à indiquer qu'il est requis dans notre page d'​index. ​
 +<​code>​
 require_once '​../​vendor/​restler.php';​ require_once '​../​vendor/​restler.php';​
- 
 use Luracast\Restler\Restler;​ use Luracast\Restler\Restler;​
- 
 use Luracast\Restler\Defaults;​ use Luracast\Restler\Defaults;​
- 
 Defaults::​$smartAutoRouting = false; Defaults::​$smartAutoRouting = false;
 +</​code>​
  
 La prochaine étape est d'​initialiser l'​objet Restler et de spécifier que la classe que nous utilisons est exposée à la plateforme Restler par la méthode GET  La prochaine étape est d'​initialiser l'​objet Restler et de spécifier que la classe que nous utilisons est exposée à la plateforme Restler par la méthode GET 
 +<​code>​
 $r = new Restler(); $r = new Restler();
- +$r->​addAPIClass('​Dis');
-$r->​addAPIClass('​Say'); +
 $r->​handle();​ $r->​handle();​
 +</​code>​
 C'est fait la plateforme est prête à prendre en compte les requêtes de type REST en utilisant l'URL suivante : C'est fait la plateforme est prête à prendre en compte les requêtes de type REST en utilisant l'URL suivante :
  
-index.php/dis/​bonjour/​Aurélien Martineau+''​index.php/Dis/​bonjour/​Aurélien Martineau''​
  
 C'est fait, nous avons réussit à créer une classe et à l'​exposer à la méthode de l'URL pour que celle-ci renvoie des informations à l'​utilisateur. C'est fait, nous avons réussit à créer une classe et à l'​exposer à la méthode de l'URL pour que celle-ci renvoie des informations à l'​utilisateur.
Ligne 46: Ligne 40:
  
  
-Result from the first GET request – when you send the name parameter it is appended to a the end of the string and displayed+Pour notre exemple, nous allons maintenant créer une API qui est capable de lire et manipuler des données. Nous allons d'​abord commencer par créer une simple base de données qui contient une table nommée individu avec le champ id, prenom, nom et email. ​
  
-Next steps +Nous allons pouvoir alors rechercher des individusen ajouterfaire des modification et enfin des suppressions.
-For this example we are going to create an API that enables us to read and manipulate data. First of all we’re going to need to create a simple database. For the time beingcreate just one table called person with the following fields: person_idname and email_address.+
  
-So this time we’re going to work with a database of people that will be searched, added to, updated and deleted. As in our earlier example we’ll be creating a class that uses a GET request – but this time it models a person. This method takes an ID and returns the information we store about that person in the database. This class references and uses a database class that isn’t going to be covered here – but the files you need are in the support download.+Voici la classe en question : 
 +<​code>​
 use Luracast\Restler\RestException;​ use Luracast\Restler\RestException;​
-class Person ​+class Individu ​
-static $FIELDS = array('​name', 'email_address');+static $FIELDS = array('​prenom','​nom', 'email');
 protected $db; protected $db;
 function __construct(){ function __construct(){
Ligne 67: Ligne 61:
 } }
 } }
-To expose the method to our API we need to create an index file that is very similar to the one used in the ‘hello world’ example. Simply pass Person into your addAPIClass method call instead of Say. You will also need to connect to your database.+</​code>​ 
 + 
 +Il suffit d'​exposer maintenant notre classe à la plateforme Restler comme nous l'​avions fait précédemment pour la classe dis bonjour le monde. 
 +<​code> ​
 require_once '​../​vendor/​restler.php';​ require_once '​../​vendor/​restler.php';​
 use Luracast\Restler\Defaults;​ use Luracast\Restler\Defaults;​
 Defaults::​$smartAutoRouting = false; Defaults::​$smartAutoRouting = false;
 $r = new Restler(); $r = new Restler();
-$r->​addAPIClass(&​lsquo;​Person&​rsquo;​);+$r->​addAPIClass(Individu);
 $r->​handle();​ $r->​handle();​
-If you now visit the URL localhost/index.php/​person/​1,​ Restler uses the GET method – because that’s the HTTP method you are using – and returns the information in our database that matches an ID of 1. If you don’t specify an ID for a person then all records are returned.+</code>
  
  
-The view of the person database in PhpMyAdmin – notice this very simple database has three fields and the person_id is set to auto_increment+Si vous visitez l'url ''​localhost/​index.php/​individu/​1'',​ Restler utilisera la méthode GET car c'est celle préconisée en Restfull et vous retournera l'​enregistrement 1 correspondant à votre base de données. Si vous ne spécifiez d'ID pour un individu tous les enregistrements vous seront retournés par défaut. ​
  
-Displaying errors +===== Les différents types d'​erreur ===== 
-As with all web-based systems providing useful and consistent error codes is extremely importantespecially if you are building something that others can integrate into their own systems. Restler ​allows you to define an error code and output a message ​to the userError codes reflect the HTTP status codes+ 
-1xx - Informational + 
-2xx - Success +Comme dans tout système digne de ce nomla gestion des erreurs est primordiale en Restfull surtout si votre système est intégré à un autre système. 
-3xx - Redirection + 
-4xx - Client Error +Restler ​permet de définir un code d'​erreur et un message ​de sortie à l'​utilisateur. 
-5xx - Server Error+ 
 +Les codes d'​erreur reflète l'​état de la requête ​HTTP envoyé à savoir ​
 + 
 +  * 1xx - Informational 
 +  ​* ​2xx - Success 
 +  ​* ​3xx - Redirection 
 +  ​* ​4xx - Client Error 
 +  ​* ​5xx - Server Error 
 + 
 +soit en français 
 + 
 +  * 1xx - Information 
 +  * 2xx - Succès 
 +  * 3xx - Redirection 
 +  * 4xx - Erreur au niveau du client 
 +  * 5xx - Erreur au niveau du serveur 
 +<​code>​
 function get($id = NULL) function get($id = NULL)
 { {
Ligne 93: Ligne 106:
 $results = $this->​db->​get('​person'​);​ $results = $this->​db->​get('​person'​);​
 if(empty($results) && $id != NULL){ if(empty($results) && $id != NULL){
-throw new RestException(400, "This ID doesn'​t exist"​);​+$langage = strtolower(substr($_SERVER['​HTTP_ACCEPT_LANGUAGE'​],0,2)); 
 +switch($langage) 
 +
 +case "​fr"​ :  
 +$message="​Cet ID n'​existe pas";​ 
 +break; 
 +case "​de"​ : 
 +$message="​Diese ID existiert nicht";​ 
 +break; 
 +case "​es"​ : 
 +$message="​Este ID no existe";​ 
 +break; 
 +case "​it"​ : 
 +$message="​Questo ID non esiste";​ 
 +break; 
 +default : 
 +$message="This ID doesn'​t exist";  
 +
 +throw new RestException(400,​ $message);
 } }
 return $results; return $results;
 } }
-Now if you visit the localhost/​index.php/​person/10, you should be presented with the error code and error message:+</​code>​ 
 + 
 +Maintenant, si vous visitez la page ''​localhost/​index.php/​individu/10''​vous aurez le message ​d'​erreur 400 avec le message ''​Cet ID n'​existe pas''​. 
 + 
 +Restler permet d'​afficher les erreurs à l'​utilisateur si vous le souhaitez. Si c'est le cas, le script n'​exécutera alors aucune autre action.
  
 +===== Format des données =====
  
-Restler ​enables errors to be displayed to the user if you wish; when this is thrown the script doesn’t execute any further actions+Vous avez remarqué que par défaut ​Restler ​renvoie des données en JSON, c'est la configuration par défaut. 
 +Maintenant vous pouvez lui spécifier un autre langage par exemple le xml en plus du JSON.
  
-Formats +<code> 
-You may have noticed that Restler is displaying the data in JSON. This is the default setting, but you can configure your system to return JSON, XML or enable the user to select which one they want to get back. In order to do this, we simply add a new line of code immediately after we call Restler in our index page: +$r->​setSupportedFormats('​JsonFormat','​XmlFormat'); 
-$r->​setSupportedFormats('​XmlFormat','​JsonFormat'); +</code>
-You can see that we have specified XML and JSON, the fact that XmlFormat is listed first means that the data is returned in this format by default. If you now visit localhost/index.php/​person/​1 the data is returned in XML format and you can switch back to JSON by using the following URL localhost/​index.php/​person.json/​1.+
  
 +Ainsi par défaut, il retournera du json, mais il pourra également accepté du XML si vous faites la requête suivante : ''​localhost/​index.php/​person.xml/​1''​.
  
-If required the returned data can be displayed in XML format: you pass an array to Restler and it does the rest 
  
  
  
 Voici la source anglophone d'où provient cet article écrit par Richard Askew  : https://​hungrydevelopers.blogspot.com/​2013/​08/​create-your-own-api-with-restler.html Voici la source anglophone d'où provient cet article écrit par Richard Askew  : https://​hungrydevelopers.blogspot.com/​2013/​08/​create-your-own-api-with-restler.html
restler.1559334658.txt.gz · Dernière modification: 2019/05/31 22:30 par unareil