Skip to content

Tchoumis/dev_v1

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FastAPI ET SQLAlchemy

Description

Dans le cadre d’un projet de refonte du système d'information de la TPE Fromagerie DIGICHEESE, une solution a été développée en utilisant FastAPI, un framework Python moderne et performant conçu pour la création d’API Web.

L’architecture Restful adoptée garantit la modularité, la performance et la sécurité requises pour un système d’information fiable et évolutif.

Prérequis

  • Python 3.8+
  • Git & GitHub

La structure du projet

dev_v1/
│
├── src/
│   ├── main.py                 # Point d'entrée de l'application FastAPI
│   ├── bdd_config.py           # Configuration de la base de données
│   ├── models.py               # Modèles SQLAlchemy (tables)
│   ├── schemas/                # Schémas Pydantic (validation des données)
│   ├── routers/                # Définition des routes de l'API
│   ├── services/               # Logique métier (business logic)
│   ├── repositories/           # Accès aux données (Data Access Layer)
│   └── database.py             # Initialisation et connexion à la BDD
│
├── test/                       # Dossier des tests Pytest
│   └── test_clients.py         # Exemple de test unitaire
│
├── .env                        # Variables d'environnement
├── requirements.txt            # Fichier des dépendances Python
├── README.md                   # Documentation du projet
├── .gitignore                  # Fichiers/dossiers ignorés par Git
└── .venv/                      # Environnement virtuel Python

Quelsques repertoires:

Dossier Nom conceptuel Rôle principal
schemas/ DTO / Pydantic Models Validation et structure des données
routers/ Routers / Controllers Gestion des routes de l’API
services/ Services / Use Cases Logique métier
repositories/ Repositories / DAO Accès aux données

Dans chacun de ces répertoires, il est recommandé de créer des fichiers correspondant à chaque entité ou fonctionnalité du projet. Par exemple, dans schemas/, on retrouvera commande.py, client.py, etc... Cela permet une organisation claire et facilite la maintenance du code à long terme.

Installation

1. Cloner le projet

git clone https://github.com/Tchoumis/dev_v1.git
cd dev_v1

Créer un environnement virtuel

Sous Windows

python -m venv .venv
.venv\Scripts\activate

Sous Linux / macOS

python3 -m venv .venv
source .venv/bin/activate

Installation des dépendances

pip install -r requirements.txt

Vérification de l'environnement

python -m pip list

Installer FastAPI et les clients HTTP

pip install fastapi requests
pip install httpx
pip install pymysql

4. Configuration

Créez une base de données nommée fromagerie_com avec votre Système de Gestion de Base de Données (SGDB) préféré (MySQL, PostgreSQL, etc.).

Modifiez la chaîne de connexion dans le fichier src/database.py ou utilisez un fichier .env.

5. Lancer le serveur

Pour démarrer le serveur de développement, exécutez la commande suivante :

uvicorn src.main:app --reload

Cela démarrera le serveur FastAPI via Uvicorn, accessible à l'adresse suivante : http://127.0.0.1:8000

Utilisation

Une fois le serveur démarré, accédez à la documentation interactive générée automatiquement par Swagger à l'adresse suivante :

http://127.0.0.1:8000/docs

Cette interface permettra de :

  • Tester les différentes API

  • Visualiser les schémas

  • Comprendre les interactions possibles avec l'API

En cas d'erreur : recharge en boucle de la page

Si la page Swagger recharge sans arrêt, essayez de : Relancer Uvicorn proprement sur un port différent, par exemple :

uvicorn src.main:app --reload --port 8001

Tests

Les tests unitaires ont été réalisés avec Pytest afin d’assurer la qualité et la fiabilité du code.

  1. Installer Pytest
pip install pytest

Lancer tous les tests

pytest

Lancer un test spécifique Par exemple, pour exécuter uniquement les tests liés aux clients :

pytest test/test_clients.py

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages