REST (REpresentational State Transfer) est un style
darchitecture pour les systmes hypermdia distribus, cr par Roy Fielding en 2000 dans le chapitre 5 de sa thse de doctorat [1] . REST nest pas un protocole (tel que HTTP) ou un format. Ce style d'architecture est particulirement bien adapt au World Wide Web mais n'en est pas dpen- dant. Les contraintes, telles que dnies par Roy Fielding, peuvent sappliquer d'autres protocoles d'application que HTTP. 1 Contraintes d'une architecture REST Les contraintes sont les suivantes : 1. Client-serveur : les responsabilits sont spares entre le client et le serveur. L'interface utilisateur est spare de celle du stockage des donnes. Cela per- met aux deux d'voluer indpendamment. 2. Sans tat : chaque requte d'un client vers un serveur doit contenir toute l'information ncessaire pour permettre au serveur de comprendre la requte, sans avoir dpendre d'un contexte conserv sur le ser- veur. Cela libre de nombreuses interactions entre le client et le serveur. 3. Mise en cache : le serveur envoie une rponse qui donne l'information sur la propension de cette r- ponse tre mise en cache, comme la fracheur, sa date de cration, si elle doit tre conserve dans le futur. Cela permet des serveurs mandataires de d- charger les contraintes sur le serveur et aux clients de ne pas faire de requtes inutiles. Cela permet gale- ment d'amliorer l'extensibilit des serveurs. 4. Une interface uniforme : cette contrainte agit selon 4 rgles essentielles. (a) L'identication des ressources : chaque res- source est identie unitairement (b) La manipulation des ressources travers des reprsentations : les ressources ont des repr- sentations dnies. (c) Un message auto-descriptif : les messages ex- pliquent leur nature. Par exemple, si une re- prsentation en HTML est code en UTF-8, le message contient l'information ncessaire pour dire que c'est le cas. (d) Hypermdia comme moteur d'tat de l'application : chaque accs aux tats suivants de l'application est dcrit dans le message courant. 5. Un systme hirarchis par couche : les tats de l'application sont identies par des ressources individuelles. Toute l'information n'est pas en- voye dans une seule ressource unique. Les re- qutes/rponses entre le client et le serveur aug- mentent et donc peuvent faire baisser la perfor- mance d'o l'importance de la mise en cache, etc. Le bnce est que cela rend beaucoup plus exible l'volution du systme. 6. Code-On-Demand (facultatif) : la possibilit pour les clients dexcuter des scripts obtenus depuis le serveur. Cela permet d'viter que le traitement ne se fasse que du ct serveur et permet donc de faire voluer les fonctionnalits du client au cours du temps. En revanche cela rduit la visibilit de l'organisation des ressources. Un tat devient dpen- dant du client et non plus du serveur ce qui contredit la rgle 2. Il faut donc tre prudent en utilisant cette contrainte [2] . 2 Description de REST 2.1 Confusion entre REST et protocoles Ce style architectural sapplique tout autant la ralisa- tion dapplications pour un utilisateur humain qu' la ra- lisation darchitectures orientes services destines la communication entre machines. RPC ainsi que SOAP ne sont pas des styles d'architecture mais des protocoles. Ces protocoles impliquent souvent des contraintes qui sont diciles rendre compatibles avec une architecture REST (Par exemple, la contrainte sur le systme hirarchis ou l'interface uniforme). Les systmes qui suivent les principes de l'architecture REST sont souvent appels RESTful. 2.2 Avantages de REST La thse de Roy Fielding prcise les avantages de ce style architectural par rapport dautres styles darchitectures 1 2 4 VOIR AUSSI dapplications Web. Citons entre autres : Lapplication est plus simple entretenir, car elle d- solidarise la partie client de la partie serveur. La na- ture hypermdia de l'application permet d'accder aux tats suivants de l'application par inspection de la ressource courante. L'absence de gestion dtat du client sur le serveur conduit une plus grande indpendance entre le client et le serveur. Elle permet galement de ne pas avoir maintenir une connexion permanente entre le client et le serveur. Le serveur peut ainsi rpondre d'autres requtes venant d'autres clients sans saturer l'ensemble de ses ports de communication. Cela de- vient essentiel dans un systme distribu. Labsence de gestion dtat du client sur le serveur permet galement une rpartition des requtes sur plusieurs serveurs : une session client nest pas maintenir sur un serveur en particulier (via une sticky session dun loadbalancer), ou propager sur tous les serveurs (avec des problmatiques de fracheur de session). Cela permet aussi une meilleure volu- tivit et tolrance aux pannes (un serveur peut tre ajout facilement pour augmenter la capacit de trai- tement, ou pour en remplacer un autre). Dans un contexte Web --- lutilisation du protocole HTTP en tirant parti de son enveloppe et ses en-ttes. --- lutilisation dURI comme reprsentant dune ressource permet d'avoir un systme universel d'identication des lments de l'application. --- la nature auto-descriptive du message permet la mise en place de serveurs cache. Les in- formations ncessaires sur la fracheur, la p- remption de la ressource sont contenues dans le message lui-mme 2.3 Inconvnients de REST Le principal inconvnient de REST est la ncessit pour le client de conserver localement toutes les donnes n- cessaires au bon droulement dune requte, ce qui induit une consommation en bande passante rseau plus grande. Notamment dans l'univers des appareils mobiles, chaque aller-retour de connexion est consommateur d'lectricit. La latence de la connexion rend galement l'interaction moins uide. 2.4 REST et HATEOAS Les termes REST et RESTful sont devenus des termes marketing pour rendre les services plus attractifs. Bien souvent, les services Web se rclamant de REST ne le sont pas. Tout au plus, ils appliquent le protocole HTTP de manire un peu plus conventionnelle. La communaut Web attache aux principes de REST et la nature hyper- media des applications a dcid d'utiliser dornavant le terme HATEOAS, qui est une abrviation pour Hyper- media as the Engine of Application State. Elle permet de rendre plus explicite une des contraintes essentielles de REST [3] . 2.5 Nomenclature Le principal dbat se concentre sur la pluralit ou non du nom d'entit. Par exemple, faut-il dnir un service comme http://www.foo.com/Client ou http://www.foo. com/Clients. On retrouve les deux parmi les API les plus clbres et les deux notations se valent. Que vous sup- portiez une cole ou l'autre, l'important est de ne pas mlanger. Ainsi, si vous optez /Clients, l'unicit sera /Clients/abc et non pas /Client/abc. De plus, vous garde- rez la mme convention pour l'ensemble des services de votre socit. 3 Bibliographie RESTful Web Services, par Leonard Richardson et Sam Ruby, est un ouvrage en anglais sorti en mai 2007. Celui-ci a popularis le style darchitecture REST [4] . Building Hypermedia APIs with HTML5 and Node, par Mike Amundsen, sorti en novembre 2011 [5] . REST in Practice, par Jim Webber, Savas Parastati- dis, Ian Robinson, sorti en septembre 2010 [6] . REST API Design Rulebook, Designing Consistent RESTful Web Service Interfaces, par Mark Masse, sorti en octobre 2011 [7] . 4 Voir aussi 4.1 Articles connexes World Wide Web Hypertext Transfer Protocol Protocole Waka Roy Fielding 4.2 Liens externes (en) Architectural Styles and the Design of Network- based Software Architectures La thse de Roy Fiel- ding dans laquelle il dcrit larchitecture REST 3 (fr) Thse de Roy T. Fielding - Traduction du Cha- pitre 5 : REST (fr) Tutoriel pour un Web Service crit avec JSP (fr) Web Services : JBoss privilgie lapproche REST (en) howto rest pour AOLserver, PyWX, Quixote (en) JBoss Helps Developers RESTEasy Writing REST-based Java Web Services 5 Notes et rfrences [1] (fr) Thse de Roy T. Fielding - Traduction du Chapitre 5 : REST [2] (fr) Thse de Roy T. Fielding - Traduction du Chapitre 5 : REST 5.2.1.1 Ressources et identiants de ressource, 5.2.1.2 Reprsentations, 5.2.2 Connecteurs. [3] (en) Roy T. Fielding, REST APIs must be hypertext- driven , 20 Oct 2008 (consult le 20 Mai 2010) [4] (en) Leonard Richardson et Sam Ruby, RESTful Web Services, O'Reilly Media, 2007, 454 p. (ISBN978-0-596- 52926-0) [5] (en) Mike Amundsen, Building Hypermedia APIs with HTML5 and Node, O'Reilly Media, 2011, 244 p. (ISBN 978-1-4493-0657-1) [6] (en) Jim Webber, Savas Parastatidis et Ian Robinson, REST in Practice, O'Reilly Media, 2010, 448 p. (ISBN 978-0-596-80582-1) [7] (en) Mark Masse, REST API Design Rulebook, O'Reilly Media, 2011, 116 p. (ISBN 978-1-4493-1050-9) Portail de linformatique 4 6 SOURCES, CONTRIBUTEURS ET LICENCES DU TEXTE ET DE LIMAGE 6 Sources, contributeurs et licences du texte et de limage 6.1 Texte Representational State Transfer Source : http://fr.wikipedia.org/wiki/Representational_State_Transfer?oldid=106201357 Contribu- teurs : Jerome misc, Benoitb, Marc Mongenet, KarlDubost, Carmine, Keriluamox, Jef-Infojef, Sbrunner, Vincnet, Pramette, Elg, Streetpc, FlaBot, YurikBot, LeonardoRob0t, Goulu, Bortzmeyer, Passoa15, Flo, Toutoune25, Neokilly, Nicorama, Georoy.aubry, Sylenius, B a l a k, MetalGearLiquid, Manudwarf, Genium, Jujun, Stephane.lecorne, S.dubourg, Bahanix, Thijs !bot, Flying jacket, Flrt, Ftier- cel, Jerome.guillaume, Yannick56, Yves Dubugnon, Footix, Speculos, Vincent Lextrait, TXiKiBoT, Aproche, VolkovBot, Sulletf, Xa- vier.Chatelain, AlleborgoBot, DavidBourguignon, Dhatier, GLec, Mdeby, HerculeBot, LaaknorBot, Trizek, Luckas-bot, ArthurBot, Xq- bot, RibotBOT, JackBot, LucienBOT, Touam, Candyghost, Lomita, Echartre, Grobh, J2PIf, EmausBot, Fractaliste, Httqm, WikitanvirBot, Addbot et Anonyme : 45 6.2 Images Fichier:Crystal_mycomputer.png Source : http://upload.wikimedia.org/wikipedia/commons/e/e3/Crystal_mycomputer.png Licence : LGPL Contributeurs : All Crystal icons were posted by the author as LGPL on kde-look Artiste dorigine : Everaldo Coelho (YellowIcon) 6.3 Licence du contenu Creative Commons Attribution-Share Alike 3.0