Qu'est-ce qu'un webservice RESTful ?

Avril 2013

REST est un ensemble de règles qui permettent de créer des webservices simples et flexibles, conçu pour le web et basé sur le protocole HTTP.

On va prendre un exemple très simple : un web service qui permet de connaître le pays duquel provient une adresse IP. Le site hostip.info propose cette fonction, sous forme de webservice REST. Pour connaître le pays, il suffit d'appeler l'URL du web-service en lui passant en paramètre l'adresse IP, de cette manière : http://api.hostip.info/get_html.php?ip=213.186.33.2.

Si vous consultez cette URL, vous allez voir qu'elle retourne les informations qu'on cherche, le pays :

Country: BELGIUM (BE)
City: Watermael-Boitsfort
IP: 213.186.33.2

Ce webservice serait très facile à utiliser en PHP par exemple, il suffirait d'appeler le webservice avec la fonction file_get_contents() pour avoir l'information qu'on cherche.

On pourrait difficilement faire plus simple : on n’a pas eu à utiliser les sockets ou à faire de la programmation réseau, une seule requête HTTP suffit (pas besoin d'initialiser une session auparavant, ni de se connecter à un compte avant de pouvoir interroger l'API).

Un webservice REST doit respecter plusieurs règles :

  • client / serveur : le serveur héberge le webservice, et le client interroge ce serveur
  • sans état (stateless) : aucune connexion ou initialisation n'est nécessaire : toutes les infos dont le serveur a besoin sont envoyées en paramètre.
    De son côté, le serveur ne gère pas de session, il traite chaque requête de manière indépendante.
    En général, l'accès au webservice REST est protégé par un token (ou clé d'API) qui permet de différencier les clients qui utilisent le webservice.
  • Système de cache : le serveur indique dans chaque réponse la période de validité des données (dans les headers HTTP)
  • Utilisation du protocole HTTP (URL) et de ses méthodes : GET, POST, HEAD, PUT et DELETE
    HTTP est un protocole simple et bien défini, chaque développeur sait ce quoi il s'agit, pas besoin d'apprendre de nouvelles notions compliquées.
    De plus, le protocole HTTP a déjà une gestion d'erreur assez poussée, avec une multitude de code de status (200, 403, 404...)

Un webservice qui respecte toutes ces contraintes est dit RESTful.

Avantages de REST par rapport à SOAP

REST rencontre un fort succès parce qu'il est simple à utiliser et à implémenter, et qu'il correspond parfaitement à ce dont on a besoin dans le web, pour créer des webservices AJAX par exemple.

Après avoir lu fusionner des cellules excel vous en saurez d'avantage sur ce sujet.

Contrairement à d'autres technologies comme SOAP ou XML-RPC, REST n'est pas un protocole, ça n'est qu'une philosophie, une approche.

SOAP impose par exemple l'utilisation de XML, les webservices doivent être définis de manière très rigide en déclarant des types de données et des enveloppes WSDL, ainsi que l'utilisation de librairie pour gérer ce protocole lourd et complexe.

De plus en plus de framework tels que Symfony ou CakePHP sont influencés par REST et se reposent davantage sur le protocole HTTP.

Que retourne un webservice REST ?

Il n'y a pas de contrainte explicite à ce niveau. En général on utilise soit XML soit JSON. JSON est très pratique pour les webservices AJAX, certains langages comme PHP permettent d'échanger très facilement des objets avec Javascript grâce aux fonctions json_encode() et json_decode().

Par contre il faut à tout prix éviter d'utiliser des formats exotiques comme c'est le cas de l'API hostip.info dont j'ai parlé au début, car il faut analyser les données renvoyées par le webservice pour en extraire les informations, en utilisant les expressions régulières la plupart du temps. Du coup on s'expose à de nombreux bugs, et en plus on perd du temps à réinventer la roue en moins bien.

Allez donc jeter un oeil sur cette page : découper un design.

0 commentaire
facultatif
Facebook Twitter RSS Email
Forum Excel
Venez découvrir le nouveau forum excel question/réponse à la stackoverflow.com !
Forum Excel
hit parade n'en a rien a foutre du W3C Positionnement et Statistiques Gratuites Vincent Paré