Il m’arrive souvent de me lancer dans des prototypes, ne serait ce que pour explorer une idée ou découvrir une technologie. Très souvent cette idée est liée à une fonctionnalité dans le back qui ne requiert pas forcément de front pour fonctionner. Mais, soyons honnête, un prototype est toujours plus convaincant lorsqu’on le voit en action.
Et voici donc mon problème, si je souhaitais faire cette vitrine pour mon prototype je me retrouvais à développer la partie front en prenant à peu près n’importe lequel des grands acteurs (React, Angular, Vue ou plus récemment Svelte).
Mais personnellement, je trouve cette étape lourde car elle n’amène pas de plus-value au prototype final et complexifie le déploiement de la solution (Un prototype est toujours meilleur s’il peut être partagé)
Une autre approche pourrait être d’avoir recours à des moteurs de templating (Jinja2 par exemple). Mais je trouve que le code généré n’est vraiment pas facilement lisible / évolutif.
Idéalement, si je peux faire une page html avec un semblant de navigation et quelques actions pour faire les preuves du prototype c’est amplement suffisant pour être convaincant.
Il est peut être temps pour moi de dire que je suis développeur python / javascript. Cependant, je pense que les principes peuvent être repris indépendamment du langage back utilisé à partir du moment où le serveur peut faire office de serveur statique.
Nous allons construire une application parfaitement inutile constituée d’une api pour accéder aux données et un front qui sera servi par une simple page html.
J’adore utiliser depuis des années Fastapi pour sa simplicité et donc je pars là-dessus pour l’api et le serveur de fichier statique.
https://fastapi.tiangolo.com/
Commençons déjà par fabriquer l’application de base qui sera servi sur le sous chemin /api.
main.py
Normalement, si vous lancez ne serait-ce que ce fichier avec Uvicorn par exemple.
On devrait alors avoir notre swagger qui est accessible et qui nous montre que tout va bien dans le meilleur des mondes.
Pour cela on va venir lire un fichier books.json trouvé en ligne pour la démo qui ressemble à ça :
On va avoir besoin de rajouter quelques lignes pour décrire le format de ce que l’on lit.
Une petite vérification sur le swagger que cela fonctionne et on va pouvoir s’intéresser au front :
Fastapi propose une solution pour héberger les fichiers statiques que nous allons utiliser :
En parallèle de ça, nous allons créer le répertoire static avec dedans un fichier index.html