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

Ceci est une ancienne révision du document !



Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /home/unareil/www/wiki/inc/parser/handler.php on line 1552

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.

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.

class Dis {
function bonjour($par='le monde') {
return "Bonjour $par!";
}
}

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.

require_once '../vendor/restler.php';
use Luracast\Restler\Restler;
use Luracast\Restler\Defaults;
Defaults::$smartAutoRouting = false;

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

$r = new Restler();
$r->addAPIClass('Dis');
$r->handle();

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

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.

Passons maintenant à quelque chose d'utile et plus structuré :

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.

Nous allons pouvoir alors rechercher des individus, en ajouter, faire des modification et enfin des suppressions.

Voici la classe en question :

use Luracast\Restler\RestException;
class Individu {
static $FIELDS = array('prenom','nom', 'email');
protected $db;
function __construct(){
$this->db = newMysqlDb('host', 'username', 'password', 'database');
}
function get($id=NULL) {
if($id != NULL){
$this->db->where('person_id', $id);
}
$results = $this->db->get('person');
return $results;
}
}

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.

 
require_once '../vendor/restler.php';
use Luracast\Restler\Defaults;
Defaults::$smartAutoRouting = false;
$r = new Restler();
$r->addAPIClass(‘Individu’);
$r->handle();

Si vous visitez l'url localhost/index.php/person/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.

la suite en anglais ici et très bientôt en français …

Les différents types d'erreur

Comme dans tout système digne de ce nom, la gestion des erreurs est primordiale en Restfull surtout si votre système est intégré à un autre système.

Restler permet de définir un code d'erreur et un message de sortie à l'utilisateur.

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 function get($id = NULL) { if($id != NULL){ $this→db→where('person_id', $id); } $results = $this→db→get('person'); if(empty($results) && $id != NULL){ $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; } Now if you visit the localhost/index.php/person/10, you should be presented with the error code and error message:

Restler enables errors to be displayed to the user if you wish; when this is thrown the script doesn’t execute any further actions

Formats 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('XmlFormat','JsonFormat'); 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.

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

restler.1559562997.txt.gz · Dernière modification: 2019/06/03 13:56 par unareil