REST - Representational State Transfer

Un service Web RESTful

Voyons comment construire et utiliser un service suivant le style REST.

Créer une application RESTful

Exemple

On désire proposer un service de calculatrice qui permet de faire des opérations de bases à savoir : l'addition, la soustraction, la multiplication et la division.

Dans une approche RPC orientée méthodes l'interface proposée serait de la forme :

Interface Calculatrice :     	 
	addition(in val1:int, int val2:int):int
	soustraction(in val1:int, int val2:int):int
	multiplication(in val1:int, int val2:int):int
	division(in val1:int, int val2:int):int  
				

Ainsi les requêtes pour effectuer ces opérations seraient de la forme :

	http://calc/addition?val1=aa&val2=bb 
http://calc/soustraction?val1=aa&val2=bb
http://calc/multiplication?val1=aa&val2=bb
http://calc/division?val1=aa&val2=bb

Or cette méthode n'est pas du tout une approche REST pour les ressources. Si on veut suivre les bonnes pratiques on va alors identifier les différentes ressources qui peuvent être manipulées.

On va observer les requêtes et réponses possibles. Tout d'abord le client va vouloir créer un nombre et il envoit la requête HTTP suivante :

PUT /nombres/quatorze HTTP/1.1
Host: calc

<nombre>
	<dizaine>http://calc/chiffre/1</dizaine>
	<unite>http://calc/chiffre/4</unite>
</nombre>

Une réponse HTTP précisera que la ressource a été créée. Ensuite le client va vouloir réaliser un calcul :

POST /calculs/ HTTP/1.1
Host: calc
<calcul> <nombre>http://calc/nombres/quatorze</nombre> <operation>http://calc/operations/addition</operation> <nombre>http://calc/nombres/six</nombre> </calcul>

Le calcul réalisé, une nouvelle ressource va être créée et identifiera le résultat de l'opération.
Le client pourra obtenir la liste des calculs effectués (GET /calculs/IDS HTTP/1.1) :

<calcul>
<nombre>http://calc/nombres/quatorze</nombre>
<operation>http://calc/operations/addition</operation>
<nombre>http://calc/nombres/six</nombre>
<result ref="http://calc/nombres/resultIDS">20</result>
</calcul>        
            

Bonnes pratiques

A RETENIR

  1. Identifier les ressources
  2. Définir les représentations et les URI
  3. Lier les représentations entre elles
  4. Spécifier et utiliser l'interface uniforme