Python REST API, quel framework?

Thursday 15 December 2016 Python, REST, API Comments

Le REST va permettre de nous orienter pûrement vers une API décrivant les ressources utilisées dans notre application. Le grand avantage d’utiliser une API REST est que nous avons une séparation entre Client et Serveur. Ainsi de multiples Clients peuvent être développés afin de consommer les ressources mises à disposition par l’API. Le grand avantage de REST est qu’il permet de requêter l’API avec de simples requêtes HTTP.

Pour implémenter une API REST dans le cadre d’un projet, J'ai choisi d'utiliser Flask. Dans cet article je passerai en revue l'évaluation du processus qui m'a conduit à cette décision en présentant des notes sur les déférents frameworks python.


Django

Pros
  • Populaire.
  • Bien documenté.
  • Disponibilité de nombreux plugins.
  • Utilisé dans plusieurs projets.
Cons
  • Pas nécessairement le mieux adapté pour un projet limité juste à une API REST.


Flask

Pros
  • La déclaration des routes est très simple.
  • Des fonctions simples pour les gestionnaires d'URL.
  • Les blueprints permettent de gérer facilement plusieurs versions.
  • La documentation est bien fournie en utilisant Sphinx.
  • Utilisé dans plusieurs projets.
Cons
  • Les transactions des bases de données est un peu plus difficile à gérer, mais possible.
  • JSON intégré mais pas XML.


TurboGears

Pros
  • La répartition des objets rend le routage d'URL assez évident.
Cons
  • La longue liste des dépendances rend le paquetage complexe.
  • JCompatibilité avec python 3.
  • Le support du projet reste discutable.


Pyramide

Pros
  • La communauté robuste et vaste.
  • REST supporté.
  • La documentation.
Cons
  • La longue liste des dépendances rend le paquetage complexe.


Pecan

Pros
  • Plus de fonctionnalités que Flask mais plus simple que Pyramid.
  • REST intégré avec un type de contrôleur spécial.
  • Créé en partie par les développeurs maintenant connu sous le nom DreamHost.
Cons
  • Petite communauté


Bottle

Pros
  • Assez petit pour faciliter l’intégration.
  • Déjà intégré avec WSME.
Cons
  • La documentation est moins claire que celle Flask.


Twisted

Pros
  • Performance asynchrone.
Cons
  • Been there, done that.
  • Style de développement asynchrone.


Tornado

Pros
  • performance asynchrone?
Cons
  • Style de développement asynchrone.


WSME

Pros
  • Sépare le modèle de view/serializer proprement et assez transparent.
  • Style déclaratif pour définir les classes des modèles utilisées pour l'entrée et types de retour.
  • Prend en charge JSON et XML (et SOAP).
  • Agnostique, plus ou moins.
  • Intégration avec Sphinx pour la génération de la documentation.
  • Auteur (Christophe de Vienne) accepte volontiers les correctifs.
Cons
  • Semble surtout aimer les appels de style RPC, mais adaptable.


Spyne

  • Spyne est un framework pour la construction de solutions distribuées qui suivent strictement le MVC pattern, où Model = spyne.model, View = spyne.protocol and Controller = user code.


ladon

  • Ladon est un framework basé sur python pour exposer des fonctions à plusieurs types de services Web. Par exemple SOAP, JSON-WSP, Arguments HTTP POST, etc.