Un template d'API moderne construit avec FastAPI et SQLModel.
- Caractéristiques
- Prérequis
- Installation
- Configuration
- Démarrage
- Utilisation des scripts
- Structure du projet
- Vérification et synchronisation de la base de données
- API Documentation
- Dépendances principales
- Sécurité
- Architecture
- Licence
- 🚀 FastAPI - Framework Web moderne et haute performance
- 🗄️ SQLModel - ORM combinant SQLAlchemy et Pydantic
- 🔐 Authentification OAuth2 - Sécurité intégrée avec tokens JWT
- 📚 Documentation automatique - Swagger UI et ReDoc
- 🎨 Interface Web - Pages HTML personnalisées avec CSS responsive
- 📦 Architecture modulaire - Séparation claire des responsabilités (CRUD, modèles, schémas, routes)
- 🔄 Vérification des tables - Synchronisation automatique des schémas BD avec les modèles
- ⚙️ Configuration flexible - IP et PORT lus depuis config.json
- 🔁 Mode développeur - Hot-reload optionnel avec --reload
- 🤖 Robots - Réponse aux robots avec un robots.txt
- Python 3.10+
- pip (gestionnaire de paquets Python)
-
Cloner le repository
git clone <url-du-repository> cd API-template
-
Utiliser les scripts de démarrage (recommandé)
Sur Linux/macOS :
chmod +x start.sh ./start.sh # Menu interactif: créer venv, installer dépendances, démarrer l'APISur Windows (PowerShell) :
.\start.ps1 # Menu interactif: créer venv, installer dépendances, démarrer l'API -
Ou installer manuellement
python -m venv .venv source .venv/bin/activate # Sur Windows: .venv\Scripts\activate pip install -r requirements.txt
-
Copier le fichier de configuration
cp config.json.template config.json
-
Éditer
config.jsonavec vos paramètres :{ "version": "3", "api": { "name": "Mon API", "ip": "0.0.0.0", "port": 8000 }, "database": { "name": "database", "debug": false }, "security": { "username": "admin", "full_name": "Administrateur", "email": "admin@example.com", "password": "votre_mot_de_passe_securise" }, "oauth2": { "client_id": "votre_client_id", "client_secret": "votre_client_secret" } }
Les scripts start.sh (Linux/macOS) et start.ps1 (Windows) offrent un menu interactif :
- Créer/Activer l'environnement virtuel
- Installer les dépendances
- Démarrer l'API
- Mode développeur : rechargement automatique lors de modifications
- Mode production : sans rechargement
Mode développeur (avec rechargement automatique) :
python -m uvicorn api.main:app --reload --host 0.0.0.0 --port 8000Mode production (sans rechargement) :
python -m uvicorn api.main:app --host 0.0.0.0 --port 8000Les scripts start.sh et start.ps1 lisent automatiquement l'IP et le PORT depuis config.json et offrent un choix de mode d'exécution.
Personnalisation :
- Modifiez le paramètre
VENV_DIRau début du script pour changer le répertoire de l'environnement virtuel - Choisissez entre mode développeur (--reload) et production lors du démarrage
L'API sera accessible à : http://localhost:8000
.
├── api/ # Code principal de l'API
│ ├── main.py # Point d'entrée FastAPI
│ ├── models.py # Modèles SQLModel
│ ├── schemas.py # Schémas Pydantic (validation)
│ ├── crud.py # Opérations base de données + vérification BD
│ ├── database.py # Configuration base de données
│ ├── utils.py # Utilitaires et configuration
│ └── routes_users.py # Routes utilisateur (séparées)
├── html/ # Pages HTML statiques
│ ├── index.html # Page d'accueil
│ ├── docs.html # Documentation personnalisée
│ ├── redoc.html # Documentation ReDoc
│ └── components/ # Composants réutilisables
├── assets/ # Ressources statiques
│ ├── css/ # Feuilles de style CSS
│ ├── images/ # Images et icônes
│ └── fontawesome/ # Icônes FontAwesome
├── config.json.template # Template de configuration
├── config.json # Configuration (à créer)
├── requirements.txt # Dépendances Python
├── README.md # Ce fichier
├── start.sh # Script de démarrage Linux/macOS
└── start.ps1 # Script de démarrage Windows
Au démarrage, l'API :
- Crée les tables manquantes automatiquement
- Ajoute les colonnes manquantes
- Corrige les types de données incompatibles
- Initialise l'utilisateur admin avec les credentials de
config.json
Une fois l'API démarrée, accédez à :
- Swagger UI : http://localhost:8000/docs
- ReDoc : http://localhost:8000/redoc
- Page d'accueil : http://localhost:8000
| Package | Version | Utilisation |
|---|---|---|
| fastapi | 0.128.0+ | Framework Web |
| sqlmodel | 0.0.31 | ORM SQLAlchemy + Pydantic |
| requests | Latest | Requêtes HTTP |
| topazdevsdk | 1.1.0 | Utilitaires et logging |
Recommandations pour la production :
- ✅ Changez les identifiants admin par défaut
- ✅ Utilisez des variables d'environnement pour les secrets
- ✅ Générez des tokens JWT sécurisés
- ✅ Activez HTTPS avec un certificat SSL/TLS
- ✅ Limitez l'accès à la base de données
- ✅ Configurez un mot de passe admin robuste
- ✅ Activez le debug à false dans la configuration
L'API suit une architecture modulaire :
- main.py : Point d'entrée et configuration FastAPI
- routes_users.py : Routes utilisateur (séparées pour meilleure organisation)
- crud.py : Opérations base de données et vérification des schémas
- models.py : Définition des modèles SQLModel
- schemas.py : Schémas Pydantic pour validation
- database.py : Configuration et gestion de la base de données
- utils.py : Utilitaires et lecture de la configuration
Facile d'ajouter d'autres routes : créez routes_produits.py, routes_commandes.py, etc.
Ce projet est sous licence. Voir le fichier LICENSE pour plus de détails.
Besoin d'aide ?