Forráskód Böngészése

Update and publish intro on Falcon framework

theenglishway (time) 7 éve
szülő
commit
7f5659a583
1 módosított fájl, 47 hozzáadás és 27 törlés
  1. 47 27
      content/posts/falcon-intro.md

+ 47 - 27
content/posts/falcon-intro.md

@@ -1,20 +1,26 @@
-Title: A l'assaut de Falcon
-Category: Le développement web pour les nuls
-Tags: développement, Falcon, Python, web
-Date: 2018-07-09
+Title: Cure de minceur avec Falcon
+Category: Je tisse ma toile
+Tags: développement, Falcon, Python, web, un peu compliqué quand même
+Date: 2018-08-06
 Summary: Premier contact avec le framework backend Falcon
 Image: /images/falcon_logo.svg
 Lang: fr
-Status: draft
+Status: published
 
 ___
 
 ![Falcon logo][falcon-logo]
 
-Après quelque temps à travailler sur un projet web perso assez complet, me
-voilà dans une énième phase de remise à plat de l'architecture du tout, qui me
-donne envie de passer du plus connu des frameworks web Python (Django) à un
-petit framework du nom de [Falcon][falcon].
+_Comme l'indique un de ses tags, et contrairement à ceux écrits jusqu'à maintenant,
+cet article est technique et pas du tout destiné à faire de la "vulgarisation",
+et ce sera certainement le cas de la plupart des prochains articles !_
+
+Dans [une énième phase de remise à plat de l'architecture de mon projet][erasing-all],
+certains nouveaux choix techniques m'ont amené à remettre en question mon
+utilisation du plus connu des frameworks web Python ([Django][django]), et à
+basculer sur un framework des plus minimalistes (et pas forcément parmi les
+alternatives les plus connues, comme Flask ou Bottle),
+du petit nom de [Falcon][falcon].
 
 Précisons d'emblée qu'il y a quelques mois, je ne connaissais RIEN au
 développement web (même la différence entre frontend et backend était un
@@ -28,7 +34,7 @@ et réflexions peut être utile.
 
 Bref, trêve de blabla.
 
-# Mon architecture
+## Mon architecture
 
 Après avoir enfin découvert les joies d'un "vrai" framework frontend, je me dis
 qu'il pourrait être profitable désormais de sévèrement limiter le travail du
@@ -51,9 +57,9 @@ on est seul maître à bord, et qu'il me paraît raisonnable de m'y attaquer
 maintenant que j'ai l'impression d'enfin vaguement comprendre ce qui se passe
 dans un serveur Web.
 
-# Installation
+## Installation
 
-## Procédure
+### Procédure
 
 On commence par se créer un petit environnement virtuel :
 
@@ -96,7 +102,7 @@ variables d'environnement et permet aussi d'activer le virtualenv par un simple
     source .venv/bin/activate
     # Des variables comme DEBUG=1 viendront s'ajouter ici
 
-## Vérification
+### Vérification
 
 On peut déjà se rassurer avec les [exemples du site officiel][falcon-examples]
 histoire de vérifier que tout marche bien.
@@ -135,10 +141,10 @@ histoire de vérifier que tout marche bien.
 
 Bon, ça semble aller ... Et maintenant ?
 
-# Premiers pas
+## Premiers pas
 
 Le site officiel propose un [petit tutorial][falcon-tutorial] qui m'a semblé
-plutôt bien fichu.
+plutôt bien fichu, et que je recommande.
 
 J'en retiens plusieurs points.
 
@@ -156,7 +162,7 @@ de commande et debugger le tout avec ses outils préférés :
     [2018-07-08 11:29:38 +0200] [13219] [INFO] Booting worker with pid: 13219
 
 Mais on peut du coup avoir un petit environnement de développement bien pratique
-(ici avec Pycharm Community Edition) :
+(ici avec [Pycharm **Community Edition**][pycharm]) :
 
 ![Pycharm et Falcon][pycharm-falcon]
 
@@ -164,35 +170,45 @@ En dehors on est effectivement vraiment "à poil" ! Le moindre petit test unitai
 sur une API qui renvoie un bête tableau en JSON nécessite de
 sortir des lignes comme `result = json.loads(response.content.decode())`.
 
-Côté serveur, quelques petits trucs sont proposés de base comme [le décodage du
-contenu envoyé par le client][falcon-media], mais seul le JSON est supporté de base ; pour
-d'autres types, il faudra aller décoder le stream binaire "à la main".
+Côté serveur, quelques petits trucs sont proposés de base comme
+[le décodage du contenu envoyé par le client][falcon-media], mais seul le JSON
+est supporté de base ; pour d'autres types, il faudra aller décoder le stream
+binaire "à la main".
 
 **Le second**, c'est que dès le tutorial, ils mettent l'accent sur l'importance
 des tests, et ça me plait bien !
 
 **Le troisième**, c'est que tout paraît assez clair et cohérent, et qu'il n'y a
-que peu de concepts à maîtriser : les requêtes, les réponses, le routage (rien
-de bien mystérieux pour un dev-web), les middlewares (classiques en backend).
-Le concept central est celui de "ressource" qui comme son nom l'indique représente
+que peu de concepts à maîtriser : les **_requêtes_**, les **_réponses_**,
+le **_routage_** (rien de bien mystérieux pour un dev-web), les **_middlewares_**
+(classiques en backend). Le concept central est celui de **_ressource_** qui
+comme son nom l'indique représente
 l'objet qu'on souhaite récupérer, modifier ou créer (et il a le même sens que
-dans la terminologie RESTful), et auquel on associera directement une "route".
-S'ajoutent juste à tout cela les "hooks" qui à première vue seront utiles pour
+dans la terminologie RESTful), et auquel on associera directement une **_route_**.
+S'ajoutent juste à tout cela les **_hooks_** qui à première vue seront utiles pour
 factoriser du code sur une ressource particulière ou certaines requêtes
 spécifiques.
 
 Accessoirement, presque tout fonctionne via le principe du duck-typing ; une
 classe de middleware par exemple n'aura pas besoin de dériver d'un objet
-particulier (à la Django, et avec [tout ce que ça implique][django-cbv]),
+particulier (à la Django, et avec [tout ce que ça implique][django-cbv] comme
+méthodes et classes à connaître plus ou moins par coeur),
 mais simplement d'implémenter quelques méthodes particulières.
 
 **Le quatrième et dernier**, c'est qu'il y a du boulot pour la suite ! Il va
-falloir faire connaissance avec toutes les librairies Python standard pour gérer
-tout ce qui était inclus de base dans Django ...
+falloir faire connaissance avec toutes les librairies Python classiques pour gérer
+tout ce qui était inclus de base dans Django ... Mais c'est tout l'avantage d'un
+framework aussi minimaliste, qui permet d'aller piocher dans l'écosystème Python
+des solutions généralement bien plus évoluées que celles proposées dans
+l'écosystème Django ... tout en étant facilement intégrables, contrairement aux
+autres petits frameworks qui proposent souvent dans leur écosystème des couches
+d'adaptation de ces libraries. Avec Falcon, on choisit ce qu'on veut et on
+l'intègre comme on veut !
 
 D'autres articles à suivre, donc !
 
 
+[erasing-all]: {filename}/content/on-efface-tout.md
 [falcon-logo]: {filename}/images/falcon_logo.svg
 [falcon-install]: https://falcon.readthedocs.io/en/stable/user/install.html#install
 [httpie]: https://github.com/jkbr/httpie
@@ -202,3 +218,7 @@ D'autres articles à suivre, donc !
 [falcon-media]: https://falcon.readthedocs.io/en/stable/api/media.html#media
 [pycharm-falcon]: {filename}/images/pycharm-falcon.png
 [django-cbv]: https://ccbv.co.uk/
+[django]: https://www.djangoproject.com/
+[pycharm]: https://www.jetbrains.com/pycharm/download/
+[flask]: http://flask.pocoo.org/
+[bottle]: https://bottlepy.org/docs/dev/