ConseilsDéveloppement web

FastAPI, le framework python alternatif à Django et Flask ?

Dorima
FastAPI, le framework python alternatif à Django et Flask ?

Si vous évoquez développement web backend à notre équipe, il se peut que Django soit le premier mot que vous entendiez. Ce framework python nous permet en effet de mettre en place des projets importants tout en le couplant avec une application frontend. D’ailleurs Django est notre solution de prédilection dès que nous voulons développer un backend. Néanmoins FastAPI, solution plus récente, semble proposer des fonctionnalités qui méritent qu’on s’y attarde.

FastAPI ? Qu’est-ce que c’est ?

FastAPI est un framework web open source pour créer des API REST (Representational State Transfer) en Python. Créé il y a cinq ans, il est toujours activement développé par son auteur. Ses deux arguments principaux : de bonnes performances et une prise en main rapide.

Les avantages de FastAPI

La prise en main est effectivement rapide : en cinq lignes de code, votre application tourne (sans aucune fonctionnalité, ce serait trop beau). On retrouve là la facilité d’utilisation classique de Python.

Le framework s’appuie à fond sur les fonctionnalités de typage de Python. Les modèles se définissent via Pydantic, qui transforme des classes typées en objets validés. Ce typage devient très utile dès que FastAPI commence à valider automatiquement les données reçues dans vos requêtes — sans aucune ligne de code supplémentaire à écrire.

Côté documentation, l’intégration d’OpenAPI génère la doc à mesure que vous codez. Vous ouvrez la page doc de votre application et vous y trouvez la liste de vos endpoints, directement testables avec des requêtes pré-remplies. Le tout se personnalise à la main si besoin.

fastapi swagger

Image tirée de la documentation de FastAPI

Au final, ce qui ressort avec FastAPI, c’est la flexibilité. Vous pouvez très bien l’utiliser pour un petit service qui expose quelques fonctions Python sur un serveur, comme pour un projet plus lourd avec base de données et stratégie de sécurité. Le framework ne vous contraint pas à un moule particulier.

Face à la maturité de Django.

Pour commencer les comparaisons, parlons de Django, framework créé en 2005, et notamment de DRF (Django REST Framework) qui est un framework, créé lui en 2011, s’ajoutant à Django pour la création d’une API REST.

La première chose à évoquer est la communauté, celle-ci s’avère bien plus nombreuse pour Django, et cela est bien normal au vu des ses années d’existence. Il sera ainsi beaucoup plus aisé de trouver de l’aide avec celui-ci. Néanmoins la notoriété de FastApi grandit rapidement et le moins qu’on puisse dire c’est que le framework suscite de l’intérêt auprès des développeurs.

Sur la flexibilité, FastAPI prend clairement l’avantage. Django contraint son utilisateur à une base de données et à une arborescence de projet normée ; FastAPI laisse beaucoup plus de marge pour organiser son code comme on l’entend. En pratique, ça facilite aussi la montée en compétence sur le framework.

Évoquons les bases de données pour notre prochain point. Seulement deux types ici, les bases dites SQL et les bases dites NoSQL. Pour le premier type, la base est hyperstructurée, rangée en objets dans des tables qui sont reliés entre elles pour correspondre au schéma que vous voulez. Bien généralement un ORM (mapping objet-relationnel) va être utilisé, et le fait que Django en intègre un par défaut, lui donne l’avantage ici. Dans FastAPi, il faut en utiliser un existant et l’intégrer, néanmoins cela se fait relativement naturellement grâce à la création de modèles Pydantic.

Pour le deuxième type, il s’agit de bases bien souvent appelées bases de documents. Très utilisé en machine learning et Big Data, ce type de base a l’avantage de ne pas exiger une hyperstructuration des données contrairement au premier. Et la flexibilité de FastAPI est ici un grand atout, car vous n’avez pas forcément à créer de structure précise pour toutes vos données. Django quant à lui ne les supporte pas de façon native.

Dernier point en faveur de FastAPI : la programmation asynchrone est gérée nativement, sans ajout de bibliothèque tierce.

Repassons aux avantages de Django. Pour ce qui est de la sécurité par exemple, celui-ci étant plus ancien, il dispose de librairies prêtes à l’emploi permettant d’intégrer la sécurité dont votre application à besoin, et celle-ci se mettra en place facilement.

Pour finir, Django est-il moins flexible ? Est-il moins facile à prendre en main ? Oui en effet, mais ces désavantages ont aussi des atouts. Une fois ces débuts un peu difficiles, votre projet sera facilement scalable, et de nouvelles fonctionnalités pourront être ajoutées plus facilement.

Face à la simplicité de Flask.

FastAPI tient-il la comparaison avec Flask ? Créé en 2010, celui-ci avait pour but de permettre la création d’API REST en un seul fichier, il est très facile d’utilisation et tous les développeurs python connaissant la notion d’API REST peuvent en créer une sans grande difficulté. Open Source et toujours maintenu, Flask dispose d’une communauté fidèle appréciant sa facilité d’usage. Il est pour certains la porte d’entrée aux API REST.

Côté popularité, FastAPI semble déjà rattraper Flask malgré sa jeunesse. Pour cause : on a vraiment l’impression d’avoir affaire à un Flask survitaminé. Aussi simple à démarrer quand on débute, mais beaucoup mieux armé dès qu’il faut passer à un projet plus sérieux.

Alors ne vous y trompez pas, si vous souhaitez une API REST très légère disposant de peu de fonctionnalités, qui n’a pas de besoin de sécurité ou qui n’évoluera pas beaucoup, Flask reste toujours très performant et facile à déployer et développer, néanmoins FastAPI semble bien plus intéressant.

Pour quels types de projets utiliser FastAPI ?

Votre projet à besoin d’une base de données SQL ? C’est tout à fait possible avec FastAPI et certains projets s’y prêteront très bien, mais Django grâce à son ORM intégré permettra ici une évolutivité plus facile, et une meilleure scalabilité de l’application, si celle-ci doit évoluer.

Une base de données NoSQL ? Là, FastAPI est un très bon candidat. Les projets autour du machine learning ou du Big Data manipulent souvent des données qui entrent mal dans une structure SQL rigide, et la flexibilité de FastAPI colle parfaitement à ce type d’usage.

Pour ce qui est de la sécurité, Django permettra plus de facilité de mise en place grâce à des packages tout fait, mais FastAPI permettra à tout développeur python aguerri, que ce soit grâce à la communauté montante ou à la facilité de mise en place de son code, d’établir la sécurité de votre application.

Aucune base de données n’est nécessaire ou la sécurité est optionnelle ? Si vous voulez une solution rapide à mettre en place, Flask reste un très bon candidat ici, et pourra toujours se connecter à une base de données grâce au langage python directement si besoin est. Néanmoins FastAPI étant rapide à mettre en place, il sera sûrement une meilleure solution grâce à ces différentes fonctionnalités, on ne sait jamais jusqu’où un projet peut évoluer…

Notre verdict sur FastAPI

En résumé pour FastAPI :

  • Avantages :
    • Flexible
    • Rapide
    • Support des bases NoSQL et pas de nécessité d’utiliser une base de données.
    • Programmation asynchrone
  • Désavantages :
    • Pas d’ORM intégré pour les bases SQL
    • Sécurité moins rapide à mettre en place
    • Scalabilité
    • Encore jeune

Étant développeurs Django, nous devons avouer être très impressionnés par les possibilités de FastAPI.

Au plaisir de jouer… Enfin nous voulons dire travailler avec dans le futur.

Envie de vous lancer ?

Du cadrage au prototype, jusqu'à l'intégration IA.

Nous accompagnons vos projets de logiciels métier de bout en bout.

Développer mon projet