>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Python

Comment créer un squelette backend FastAPI fonctionnel en quelques minutes

Chaque fois que je démarre un nouveau projet FastAPI, je suis coincé dans un jour de la marmotte. Je dois configurer à nouveau la structure des répertoires, connecter la base de données, écrire les migrations, raccorder les variables d'environnement, construire le Dockerfile et configurer les linters. Il est facile de gaspiller une soirée entière sur cette routine avant même que le premier vrai endpoint n'apparaisse.

FastAPI Template Logo

Bien sûr, vous pouvez copier la structure de votre dépôt précédent. Mais elle contient généralement une multitude de contournements anciens, de dépendances inutiles et de bibliothèques obsolètes. Les modèles prêts à l'emploi des résultats de recherche correspondent aussi rarement au but, car l'auteur a choisi TortoiseORM mais vous avez besoin de SQLAlchemy 2.0, ou il a inclus Celery, lourd, au lieu de files d'attente légères.

Le dépôt FastAPI-template du développeur s3rius résout ce problème différemment. Ce n'est pas un simple modèle statique, mais un générateur de projet interactif flexible.

Constructeur au lieu d'un modèle rigide

Le projet fonctionne comme un questionnaire en terminal. Vous lancez l'utilitaire via pip, uv ou Docker, répondez à quelques dizaines de questions et obtenez une base de code prête à l'emploi adaptée à vos besoins.

Le principal avantage du générateur est sa variabilité. La plupart des modèles imposent une pile spécifique, mais ici vous assemblez vous-même l'ensemble de composants nécessaire.

Bases de données et ORM de votre choix

Au lieu d'être lié à une seule bibliothèque, l'utilitaire prend en charge plusieurs options populaires de manipulation de données :

  • SQLAlchemy 2.0 avec moteur async
  • TortoiseORM avec génération de migrations via Aerich
  • Piccolo ORM
  • Ormar
  • Beanie pour MongoDB
  • Driver psycopg brut sans ORM

Si vous n'avez pas besoin de base de données du tout, vous pouvez choisir l'option sans stockage de données. Dans ce cas, le code n'aura pas de dépendances inutiles ni de fichiers de configuration superflus.

REST ou GraphQL

Par défaut, le générateur construit une API REST classique avec documentation Swagger automatique. Mais si votre frontend préfère travailler via GraphQL, le générateur configurera le wrapper basé sur la bibliothèque Strawberry. Pas besoin de configurer manuellement le schéma et les types pour commencer.

Tâches en arrière-plan et files d'attente

Au lieu de Celery, volumineux, l'auteur du modèle a ajouté l'intégration avec Taskiq — un gestionnaire de tâches asynchrone moderne pour Python. Il s'intègre parfaitement dans l'architecture asynchrone globale de FastAPI. Comme courtier de messages, vous pouvez choisir Redis, RabbitMQ ou Kafka lors de la génération.

Monitoring et journalisation prêts à l'emploi

Le modèle dispose déjà d'intégrations prêtes intégrées que vous devez généralement configurer manuellement à partir d'articles séparés :

  • Collecte de métriques pour Prometheus
  • Traçage via OpenTelemetry
  • Envoi d'erreurs vers Sentry
  • Journalisation structurée via Loguru

Toutes ces options sont activées via de simples drapeaux ou une sélection dans le menu interactif.

Démarrage rapide

Pour exécuter l'utilitaire, vous devez avoir Git, Python et le gestionnaire de paquets rapide uv installés sur votre machine.

Le générateur s'installe via pip :

python3 -m pip install fastapi_template
fastapi_template

Après le lancement, un questionnaire étape par étape apparaîtra dans la console. Vous sélectionnez le nom du projet, le SGBD souhaité, le type d'authentification (JWT ou cookie via fastapi-users), le format CI/CD (GitHub Actions ou GitLab CI) et les services supplémentaires.

Lorsque le générateur se termine, allez dans le dossier créé et lancez l'environnement :

cd my_awesome_project
docker-compose up --build

Si vous ne souhaitez pas installer le package localement, vous pouvez exécuter le générateur via Docker en une seule ligne :

docker run --rm -it -v "$(pwd):/projects" ghcr.io/s3rius/fastapi_template

Génération via les drapeaux CLI

Si vous configurez la création automatisée de microservices dans votre entreprise, vous pouvez désactiver le mode interactif. L'utilitaire accepte tous les paramètres via les arguments de ligne de commande :

fastapi_template \
  --name billing_service \
  --api-type rest \
  --db postgresql \
  --orm sqlalchemy \
  --migrations \
  --redis \
  --taskiq \
  --prometheus \
  --ci github \
  --quiet

Cet appel créera un service prêt avec SQLAlchemy configuré, les migrations Alembic, les tâches en arrière-plan Taskiq, les métriques et un pipeline GitHub sans une seule question dans le terminal.

Ce qu'il y a à l'intérieur du projet généré

Le code généré surprend agréablement par sa structure. Il n'y a pas de désordre de tout entassé dans un seul fichier main.py.

L'architecture est divisée en couches logiques :

  • web/api : routeurs répartis par préfixes de version et modules
  • db : connexion à la base de données, modèles et configuration des migrations
  • services : logique métier et clients de services externes
  • settings.py : paramètres typés basés sur pydantic-settings

Le projet inclut immédiatement des tests pytest avec environ 90% de couverture pour la structure de base, pre-commit configuré avec des linters, et un docker-compose.yml prêt avec tous les services sélectionnés. Vous n'aurez pas besoin de lancer séparément Redis ou PostgreSQL pour le développement local.

Qui trouvera ce projet utile

Le générateur est parfait pour deux scénarios.

Le premier cas est le lancement rapide de projets personnels et de MVPs. Quand vous voulez tester une hypothèse pendant le week-end, il n'y a pas envie de passer une demi-journée sur du code répétitif.

Le deuxième cas est la normalisation des microservices dans une équipe. Vous pouvez utiliser ce modèle comme base ou utiliser son interface CLI afin que les nouveaux services de l'entreprise soient créés selon une norme unique avec la télémétrie et les tests déjà configurés.

Si vous programmez en Python et lancez souvent de nouveaux backends FastAPI, ajoutez définitivement ce dépôt en favoris. Cela vous fera gagner beaucoup de temps et de nerfs au départ.

Projets similaires