2023-07

2023-07-29, 15:40–16:05 (US/Pacific), The Barn Back to the Future of Hypermedia in Python by Mario Munoz #PyHAT #Python #htmx #ASGI #Tailwind

“Hypermedia is your friend,” they said. “You don’t need JavaScript anymore,” they said. “You’ll be fine…”

It’s no secret that hypermedia has been making a quiet resurgence in the web development landscape.

One of the most popular toolkits in the Python space is htmx, offering a simple, declarative approach to AJAX, CSS Transitions, and Server Sent Events directly from your HTML.

Additionally, tools like TailwindCSS are making it easier to design your application simply by adding preconfigured CSS classes to your HTML elements.

There’s no need to meddle around with a CSS file or fear that completely changing your design will increase bloat or introduce clashing code.

You can now build a beautiful and responsive application with nothing more than Python and HTML!

Let’s take a look at some of the tools that exist to enable the PyHAT (Python htmx ASGI Tailwind) stack and discuss where we can go from here.

2023-07 API, HTTP et REST sont des acronymes qui designent 3 choses qui n’ont absolument rien à voir.

API, HTTP et REST sont des acronymes qui designent 3 choses qui n’ont absolument rien à voir. Globalement, tout le monde ou presque les confondent

Petite explication, car la confusion est très grande, tant chez les développeurs que les non-développeurs : 👇

API

1️⃣ “API”, ou Application Programming Interface, désigne simplement la façon dont un programme permet à d’autres programmes d’interagir avec lui. C’est tout.

Une API peut donc être la signature d’une simple fonction, la méthode d’une classe, ou éventuellement la capacité, pour un programme, de recevoir des instructions par l’intermédiaire d’un réseau quelconque.

Dans ce dernier cas, c’est un sens assez étendu d’une API.

API est donc globalement tout ce qui est publiquement exposé par un programme et qui permet d’interagir avec lui.

On ne parle pas spécialement de réseau ici, ni même d’internet.

HTTP

2️⃣ HTTP est un protocole standardisé qui spécifie une façon dont des programmes vont s’échanger des informations via un réseau.

Sur internet, la majorité des serveurs web sont des serveurs HTTP, capables de recevoir des messages (requête HTTP) et d’en envoyer en retour (réponse HTTP).

Dans ce sens, HTTP permet, pour une application, d’exposer une API dans le sens précédemment défini.

Sans connaissance d’HTTP d’ailleurs, aucune possibilité d’écrire correctement une application web, tant côté backend que frontend.

Vous remarquerez que l’on n’a pas encore parlé de REST.

REST

3️⃣ REST est un ensemble de contraintes qui permettent de définir comment un service exposé sur internet permet de manipuler des ressources et d’en obtenir leur représentation textuelle.

C’est un peu abstrait, mais globalement voici quelques points que l’on peut retenir de REST :

  • On peut faire du REST sur un autre protocole que HTTP : HTTP n’implique pas REST, ni l’inverse

  • REST implique que la représentation d’une resource contienne un ensemble de liens permettant d’accéder directement aux représentations des resources liées à cette première resource – on parle de liens hypertextes.

Roy Fielding en parle mieux que moi ici : https://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven

> (…) if the engine of application state (and hence the API) is not being > driven by hypertext, then it cannot be RESTful and cannot be a REST API. Period. > Roy Fielding

Qui est Roy Fielding ? Il a défini REST dans sa thèse de doctorat, en 2000. Dispo ici : https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

Pour info, il a aussi participé à la définition du standard HTTP.

Quand Roy Fielding vous dit que l’immense majorité des API HTTP présentes sur Internet ne sont pas RESTful, il a raison.

Pourquoi a-t-il raison ? Parce que c’est lui qui a défini REST. Si vous n’êtes pas d’accord avec lui, vous n’êtes pas d’accord avec sa définition.

Commentaire de Carson

#api #http #rest #kesako #définitions

narrator: across his face crept the furitive, hang-dog look of an english speaker about to talk french:

je suis desole, je ne parle pas francais…

but I have written an article on this topic here:

which is part of a broader set of essays here: https://htmx.org/essays/#hypermedia-and-rest