瀏覽代碼

Update and publish intro on Falcon framework

theenglishway (time) 7 年之前
父節點
當前提交
7f5659a583
共有 1 個文件被更改,包括 47 次插入27 次删除
  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
 Summary: Premier contact avec le framework backend Falcon
 Image: /images/falcon_logo.svg
 Image: /images/falcon_logo.svg
 Lang: fr
 Lang: fr
-Status: draft
+Status: published
 
 
 ___
 ___
 
 
 ![Falcon logo][falcon-logo]
 ![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
 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
 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.
 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
 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
 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
 maintenant que j'ai l'impression d'enfin vaguement comprendre ce qui se passe
 dans un serveur Web.
 dans un serveur Web.
 
 
-# Installation
+## Installation
 
 
-## Procédure
+### Procédure
 
 
 On commence par se créer un petit environnement virtuel :
 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
     source .venv/bin/activate
     # Des variables comme DEBUG=1 viendront s'ajouter ici
     # 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]
 On peut déjà se rassurer avec les [exemples du site officiel][falcon-examples]
 histoire de vérifier que tout marche bien.
 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 ?
 Bon, ça semble aller ... Et maintenant ?
 
 
-# Premiers pas
+## Premiers pas
 
 
 Le site officiel propose un [petit tutorial][falcon-tutorial] qui m'a semblé
 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.
 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
     [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
 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]
 ![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
 sur une API qui renvoie un bête tableau en JSON nécessite de
 sortir des lignes comme `result = json.loads(response.content.decode())`.
 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
 **Le second**, c'est que dès le tutorial, ils mettent l'accent sur l'importance
 des tests, et ça me plait bien !
 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
 **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
 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
 factoriser du code sur une ressource particulière ou certaines requêtes
 spécifiques.
 spécifiques.
 
 
 Accessoirement, presque tout fonctionne via le principe du duck-typing ; une
 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
 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.
 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
 **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 !
 D'autres articles à suivre, donc !
 
 
 
 
+[erasing-all]: {filename}/content/on-efface-tout.md
 [falcon-logo]: {filename}/images/falcon_logo.svg
 [falcon-logo]: {filename}/images/falcon_logo.svg
 [falcon-install]: https://falcon.readthedocs.io/en/stable/user/install.html#install
 [falcon-install]: https://falcon.readthedocs.io/en/stable/user/install.html#install
 [httpie]: https://github.com/jkbr/httpie
 [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
 [falcon-media]: https://falcon.readthedocs.io/en/stable/api/media.html#media
 [pycharm-falcon]: {filename}/images/pycharm-falcon.png
 [pycharm-falcon]: {filename}/images/pycharm-falcon.png
 [django-cbv]: https://ccbv.co.uk/
 [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/