Une architecture REST (Representational State Transfer) décrit aujourd’hui une architecture faiblement couplée de type Web Service mais où l’interface XML de communication n’implémente pas le mode SOAP ni les normes WS-*. La plupart des API comme celles de Yahoo utilisent ce principe de web service.
Mais le vrai REST, tel qu’il a été pensé par son créateur Roy Fielding est ce que l’on appele aujourd’hui le RESTful.
Faire du RESTful c’est associer un verbe avec un nom. Le verbe étant l’action que l’on souhaite réaliser et le nom, la ressource accédée. Si l’on regarde des traces HTTP, on voit souvent des lignes comme
GET /images/logo.png
Dans ce cas, GET est le verbe et l’image png la ressource.
Nos navigateurs web modernes connaissent deux verbes qui sont le GET et le POST.
En théorie, si l’on traduit ces mots anglais, on dispose donc d’un verbe pour voir (GET) et d’un verbe pour envoyer une
commande (POST). Cela signifie que lorsqu’on utilise un formulaire et que l’on envoie en GET une action comme par exemple un
/application/utilisateurs.do?delete=12 , on transgresse le verbe GET pour l’utiliser comme action du client et effectue la suppression.
En RESTful on aurait pu écrire la ligne précédente en :
DELETE /application/utilisateurs.do <xml> <id>12</id> </xml>
En résumé pour les strutsiens, le RESTful c’est une DispatchAction mais en version standard HTTP.
L’implémentation actuelle du protocole HTTP telle que nous la connaissons, utilise donc qu’une partie des fonctionnalités offertes. On trouve des articles qui montrent ce problème et demandent donc une implémentation plus complète de la norme.
Est-ce que cela serait plus propre et rigoureux ? oui !
Est-ce que cela apporterait une amélioration ? J’en doute…
Commentaires récents