REST et HTTP expliqué à sa femme…


Cette semaine, j’ai reçu cet article par mail. Il explique les bases du web et des notions informatiques de façon abordable. J’en partage des extraits à mon tour. L’article complet est disponible ici :  comment j’ai expliqué REST à ma femme

En bref, Ryan Tomayko nous retranscris comment il a expliqué à sa femme : l’importance et le caractère universel du protocole HTTP, qui permet de localiser une ressource n’importe où | l’avancée probable vers les services web, qui permettront à toutes les machines de communiquer entre elles pour localiser d’autres ressources | l’utilisation du protocole HTTP pour appliquer une action à n’importe quelle ressource, et permettre une communication universelle, et une collaboration des systèmes.

Le protocole HTTP, localiser quelque chose n’importe où.

  • Lui : Le protocole HTTP peut faire plein de choses vraiment géniales.
  • Sa femme : Tu veux dire http comme le début de la ligne que je tape dans le navigateur ?
  • Lui : Oui. Cette première partie dit au navigateur quel protocole utiliser. C’est l’une des avancées les plus importantes de l’histoire de l’informatique. Cela décrit la localisation de quelque chose n’importe où dans le monde à partir de n’importe où dans le monde. C’est le principe fondateur du Web. Une façon de l’imaginer serait les coordonnées GPS pour la connaissance et l’information.
  • Sa femme : Pour les pages Web ?
  • Lui : Pour n’importe quoi. Vraiment.  Le Web est construit sur un style d’architecture appelé REST. REST fournit la définition d’une ressource, qui est ce vers quoi on pointe. Par exemple, les url disent au navigateur qu’il y a un concept quelque part. Un navigateur peut alors aller demander une représentation particulière du concept. De manière spécifique, le navigateur demande la représentation page Web du concept.

Les services web, quand les machines discutent entre elles.

  • Sa femme : Quels sont les autres types de représentations disponibles ?
  • Lui : Hmm. Eh bien, il y a ce concept que les gens appellent « services Web ». Le concept élémentaire est que les machines pourraient utiliser le Web de la même façon que les gens le font. Les ordinateurs peuvent utiliser les mêmes protocoles pour s’envoyer des messages de l’un à l’autre. Nous avons fait cela depuis très longtemps mais aucune des techniques que nous utilisons aujourd’hui ne fonctionne très bien lorsque nous avons besoin de parler à toutes les machines dans le monde entier. La plupart des techniques que nous utilisons au travail pour faire communiquer les ordinateurs entre eux n’ont pas eu cette exigence. On avait juste besoin de parler avec un petit groupe de machines.
  • Sa femme : Et maintenant, on a besoin de parler à toutes les machines ?
  • Lui :  Oui – et plus. Nous avons besoin d’un moyen pour qu’une machine parle à une autre machine à propos d’une ressource qui est peut-être disponible sur une troisième machine. Disons que tu parles à ta soeur et qu’elle veuille t’emprunter ta moto ou quelque chose mais que tu ne l’as pas – ta mère l’a. Donc tu dis à ta soeur de la prendre directement chez ta mère. Ceci arrive en permanence dans la vie courante et cela arrive tout le temps quand les machines commencent à parler également.
  • Sa femme : Donc comment les machines se disent l’une à l’autre où se trouvent les choses ?
  • Lui : L’URL, bien sûr. Si toutes les choses dont les machines ont besoin de parler possèdent un URL correspondant, nous avons créé l’équivalent machine d’un nom commun. Les machines n’ont pas de noms universels. C’est pourquoi l’URL est tellement important. Cela permet à tous les systèmes d’échanger avec tous les autres à propos de leurs noms.

 Le polymorphysme, appliquer une action universelle à n’importe quelle ressource.

  • Sa femme : Et à propos des verbes, des pronoms et des adjectifs ?
  • Lui : C’est une drôle de blague mais ce n’est pas vraiment une blague en fait. Les verbes sont importants. Il existe un concept puissant en programmation et en théorie de l’informatique appelé polymorphisme. C’est une façon technique de dire que les différents noms peuvent se voir appliquer le même verbe.
  • Sa femme : Je pige pas.
  • Lui : Si au lieu de dire, « prends la tasse, » ou « prends le journal, » ou « prends la télécommande » que se passerait-il si nous avions besoin d’utiliser des verbes différents pour chacun des noms communs ? Je ne pourrais pas utiliser le mot « prendre » universellement, mais à la place penser un nouveau mot pour chaque combinaison verbe-nom commun. Nos cerveaux sont assez intelligents pour savoir que le même verbe peut être appliqué à différents noms communs. Certains verbes sont plus spécifiques que d’autres et ne peuvent être utilisés que sur un petit ensemble de noms communs. Par exemple, je ne peux pas conduire une tasse et je ne peux pas boire une voiture. Mais certains verbes sont universels comme prendre (GET), placer (PUT) et effacer (DELETE).
  • Lui HTTP est entièrement consacré à l’application des verbes sur des noms communs. 

Le protocole HTTP, capable de réaliser le polymorphisme.

  • Lui :  HTTP est entièrement consacré à l’application des verbes sur des noms communs. Par exemple, quand tu vas sur une page Web, le navigateur fait un HTTP GET de l’URL que tu as tapé et en retour obtient une page Web. La page Web donne juste les URLs vers les images et le navigateur fait des HTTP GETs supplémentaires sur elles jusqu’à ce que toutes les ressources soient obtenues et la page affichée. Mais la chose importante est que des noms communs de nature très différente peuvent être traités de la même façon. Que le nom soit une image, un texte, une vidéo, un mp3, un diaporama, quoi que ce soit. Je peux tous les prendre de la même façon avec un URL.
  • Sa femme : Il semble que GET soit un verbe plutôt important.
  • Lui : En effet. Particulièrement quand tu utilises un navigateur Web parce que les navigateurs ne font pratiquement que prendre (GET) les choses. C’est un problème car cela a incité de nombreuses personnes à croire que HTTP ne sert juste qu’à prendre (GET). Mais HTTP est vraiment un protocole général pour appliquer des verbes sur des noms communs.

HTTP, un système permettant une communication universelle.

  • Sa femme : Cool. Mais je ne vois toujours pas le pourquoi du comment. De quels types de noms et de verbes as-tu besoin ?
  • Lui : Eh bien les noms sont là mais pas dans le bon format. Les machines ont juste besoin des données. Idéalement, chaque URL aurait une version lisible par un humain et une représentation pour une machine. Quand la machine prend une ressource, elle demandera la version appropriée lisible par la machine. Quand un navigateur prend la ressource pour un humain, il demandera celle lisible par un humain.
  • Sa femme : Donc les gens auront à rendre toutes leurs pages lisibles par les machines.
  • Lui : Si c’est profitable. Passons à un exemple concret. Tu es enseignante – à l’école je parie que vous avez un gros système informatique, ou trois ou quatre systèmes probablement, qui vous permettent de gérer les étudiants. (…) S’il existait une version machine de la représentation pour chaque URL, il serait trivial de créer de nouveaux outils sur le système car toute cette information serait « consommable » d’une façon normalisée. Il serait aussi plus facile pour chacun des systèmes de communiquer entre eux. Ou, tu pourrais construire un système national ou régional qui serait capable de communiquer avec chacun des systèmes individuels des écoles pour compiler les bulletins scolaires. Les possibilités sont infinies.

 Conclusion…

  • Sa femme : Donc, c’est ce sur quoi, toi et tous les ingénieurs en informatique travaillent en ce moment ? Décider à quoi doivent ressembler les données ?
  • Lui : Malheureusement, non. À la place, la grande majorité de ceux-ci sont occupés à définir des couches de spécifications complexes pour traiter ce problème d’une façon différente qui est loin d’être aussi utile ou claire. Les noms ne sont pas universels et les verbes ne sont pas polymorphes. Nous sommes en train de jeter des dizaines d’années d’utilisation concrète et de techniques éprouvées et commençons avec quelque chose qui ressemble beaucoup à d’autres systèmes qui ont précédemment échoué. La seule raison pour laquelle nous utilisons HTTP est de nous épargner des discussions avec nos responsables réseaux et sécurité. Nous sacrifions la simplicité pour des outils flashy et magiques.

[Source : pompage.net]

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *