DEV Community

Cover image for REST In Peace
damienb-opt for Onepoint

Posted on

REST In Peace

Dans le monde numérique d’aujourd’hui, l’architecture REST (Representational State Transfer, 2000) est devenue un pilier fondamental pour le développement du Web. Cette architecture, conceptualisée par Roy Fielding dans sa thèse de doctorat soutenue en 2000, a transformé la manière dont les systèmes distribués communiquent et interagissent. Avant cette révolution, l’Internet était déjà en pleine effervescence grâce à une série de technologies et de protocoles qui ont jeté les bases des communications en ligne. Cet article explore l’évolution de ces technologies précurseurs, la vision novatrice du Web décrite par Fielding, et la récupération du titre de sa thèse dans le paysage numérique actuel.

L’avant Web

Avant l’émergence du World Wide Web, plusieurs technologies ont été fondamentales pour le développement des communications sur Internet. Parmi celles-ci, des protocoles comme FTP (File Transfer Protocol, 1971), Telnet (1983), et SMTP (Simple Mail Transfer Protocol, 1980) ont joué un rôle crucial. FTP permettait le transfert de fichiers entre ordinateurs, Telnet offrait un accès à distance aux systèmes, et SMTP facilitait l’envoi de courriels, établissant ainsi les bases des communications numériques.

NNTP (Network News Transfer Protocol, 1986) a été utilisé pour la distribution, l’interrogation, la récupération et la publication de messages dans les groupes de discussion Usenet. Ce protocole a permis le partage d’informations et de discussions à grande échelle, bien avant l’apparition des forums en ligne modernes.

IRC (Internet Relay Chat, 1988) a introduit la communication en temps réel, permettant aux utilisateurs de discuter en ligne dans des canaux publics ou privés. Cela a ouvert la voie à des interactions instantanées et à la formation de communautés en ligne.

En parallèle, des outils comme HyperCard (1987) ont introduit des concepts d’hypertexte et de navigation par liens, préfigurant les fonctionnalités qui deviendront centrales dans le Web. HyperCard permettait de créer des "empilements" de cartes interconnectées, offrant une expérience interactive et multimédia.

À la même période, le RPC (Remote Procedure Call, 1986) présenté par Nelson propose une approche différente des protocoles ci-dessus, en s’intéressant à l’expérience programmeur. Son application directe sera en revanche limitée au monde de l’entreprise.

Ces technologies et concepts ont préparé le terrain pour les innovations qui suivront, en posant les bases de la communication et de l’interaction numérique avant l’avènement du Web.

La thèse de Roy Fielding

Le World Wide Web (W3, 1989) arrive porté par Tim Berners-Lee, et en 1993 à rebours de ce qui est fait côté Gopher (1991), les technologies du W3 sont mises dans le domaine public. 1993 est aussi l'année où Roy Fielding obtient son Master of Science et s'implique dans le W3 dans le cadre de son travail à l'université de Californie. Il participe ainsi à l'élaboration de HTTP, de HTML et d'URI. C'est en 2000 qu'il publie sa thèse de doctorat, intitulée "les styles d'architecture et la conception des architectures logicielles en réseau" ("Architectural styles and the design of network-based software architectures").

Cette thèse étudie les différents styles d'architecture répandus jusqu'alors dans l'optique de leur utilisation dans un système hypermédia en réseau, en particulier à l'échelle d'Internet. Pour cela il définit les contraintes d'architectures essentielles à respecter pour être pertinent, et examine les différents styles existants à la lumière de celles-ci. Il faut être sur une base client / serveur, sans état, avoir des possibilités de mise en cache, une uniformité d'interface, un système en couche et donner la possibilité d'avoir du code à la demande.

La spécificité de cette dernière contrainte, celle du code à la demande ("Code-On-Demand") (notre bien connu JavaScript dans le navigateur), est que c'est la seule à être optionnelle. Dans REST, on peut se passer du code côté agent utilisateur, alors que du reste, non.

La thèse a également précisé la notion d’API (Application Programming Interface, 1968), en requalifiant le terme d'origine d'API de bibliothèque ("library-based API"), et en présentant les API réseau ("network-based APIs"), qui facilitent l’interaction entre différentes applications sur le réseau.

Caractéristiques des APIs réseau

Une API de bibliothèque (§6.5.1) se définit par un ensemble de points d'entrée ainsi que les paramètres associés en entrée ou en sortie. En langage courant, on parlera d'opérations pour les points d'entrée (comme des fonctions, des méthodes ou des procédures), de paramètres et de type de retour. C'est la façon standard de décrire une interface (ou un entête) qui permet de compiler un programme appelant une implémentation de l'opération, sans connaître le code source de l'implémentation.

C'est aussi le formalisme retenu par RPC, parce que cette métaphore de l'opération locale (i.e. non distribuée, et en particulier sans réseau) était usuelle pour les programmeurs de l'époque. En RPC en revanche on parlait d'IDL (Interface Definition Language, implémentation 1981, le nom viendra après), qui permet de générer l'API dans le langage de programmation cible.

L'API de bibliothèque n'est pas très intéressante au sens de REST. Elle est bien connue, et elle a montré ses limitations dans le développement du Web. Ce qui intéresse Roy Fielding est l'API réseau, qui en conséquence n'est pas une liste d'opération avec des paramètres en entrée et en sortie. Toujours dans le chapitre §6.5.1 de sa dissertation, il la décrit comme une syntaxe des échanges réseaux, avec des sémantiques définies, pour les interactions inter-applicatives.

Il donne deux exemples de ces API réseaux : FTP et HTTP. Il cite aussi en contre-exemple CORBA (1991), pour lequel il argumente que la sémantique n'est pas définie par le protocole réseau (IIOP) mais par l'IDL. L'IDL est dans le cas de REST un marqueur de dépossession de l'hypermédia : on sort du cadre de la thèse.

L’après thèse, le blog

Ce travail de Roy Fielding, personnalité déjà connue par ses participations aux travaux du consortium W3, n'est pas passé inaperçu. A l'époque, les mécaniques RPC sur HTTP étaient portées par XML-RPC (1998) et son descendant indirect SOAP (2000). Surfant sur la vague anti-XML, langage trop lié aux méchants Microsoft et IBM entre autres, certains ont profité de la visibilité de Fielding pour s'approprier le mot REST et donner écho à leurs marottes.

En 2007 paraît le livre "RESTful Web Services" de Leonard Richardson et Sam Ruby, suivi en 2013 par "RESTful Web APIs" de Richardson, Mike Amundsen et Ruby. Ils seront un des vecteurs principaux de la diffusion du terme "RESTful". REST n'est ni une bibliothèque, ni une méthodologie : il ne répond pas aux besoins immédiats des codeurs. C'est à cet enjeu que ces livres s’attaquent, mais avec l'hypermédia loin au second plan du premier livre, le plus populaire.

Une incompréhension fréquente de la centralité de l’hypermédia dans REST a conduit à des implémentations incomplètes ou erronées de ce style d'architecture. Fielding a souvent critiqué le retour en force du RPC, sur son blog ou sur Twitter, soulignant que beaucoup de développeurs ne comprenaient pas pleinement les principes de REST, ce qui a donné lieu à des débats animés dans la communauté.

Laissez REST en paix : REST In Peace

Aujourd’hui, bien que le terme REST soit largement adopté, les détournements multiples de son contenu, que ce soit l'abandon de son principe structurel de l'hypermédia, de la contradiction de l'expression "REST API" avec l'API réseau ou du caractère désormais obligatoire du code à la demande, devraient faire hésiter à prôner ces termes. L'immense majorité des codeurs pensent à Swagger (2011), ou à sa normalisation OpenAPI (2016), quand ils entendent les expressions "REST API" ou "RESTful".

Pourtant, la spécification OpenAPI est uniquement une grammaire d'IDL, avec les paramètres dispersés façon puzzle. Les termes "REST" et "RESTful" sont d'ailleurs absent de la spécification OpenAPI. Et du côté des "API Gateways", Kong a déprécié en 2018 le terme "API" de son modèle, au profit des termes "route" et "service".

De son côté Roy Fielding a annoncé sur son blog l'abandon de toute volonté de vulgariser sa thèse en 2008. Il continue de temps en temps à évoquer le sujet sur X, mais n'en parle plus sur Twitter. Le cas trivial d'une "API REST" qui se restreint à lancer du JSON sans hyperlien sur HTTP n'est même plus abordé. Les vulgarisateurs de REST, subtilement appelés RESTafarians par les pseudo-RESTfuliens, sont considérés par ces derniers comme des cryptos fascistes ne comprenant rien au monde de l'informatique.

Il est nécessaire désormais de laisser REST en paix, en respectant ses concepts originaux pour garantir des systèmes robustes et évolutifs : la fameuse toile à l'échelle d'Internet, qui résiste pour l'instant à tout, même aux développeurs TypeScript, preuve de la qualité de son architecture.


Cet article fait partie du "Advent of Tech 2024 Onepoint", une série d'articles tech publiés par Onepoint pour patienter jusqu'à Noël.
Voir tous les articles du Advent of Tech 2024.

Top comments (0)