Cette API permet d'interagir avec la base de données AdventureWorks hébergée sur Azure SQL. Elle inclut une gestion des produits (CRUD) et un système d'authentification sécurisé basé sur OAuth2 avec JWT.
-
Authentification sécurisée :
- Génération de tokens JWT via
/login. - Protection des routes via OAuth2.
- Génération de tokens JWT via
-
CRUD des produits :
- Lister les produits :
GET /products/ - Récupérer un produit spécifique :
GET /products/{product_id} - Créer un nouveau produit :
POST /products/ - Mettre à jour un produit existant :
PUT /products/{product_id} - Supprimer un produit :
DELETE /products/{product_id}
- Lister les produits :
- Python 3.9 ou supérieur.
- Pilote ODBC :
ODBC Driver 18 for SQL Server. - Une base de données Azure SQL configurée.
- Cloner ce dépôt :
git clone https://github.com/AFlo59/API-CRUD.git
cd ./API-CRUDpython -m venv venv
source venv/bin/activate # Sur Linux/Mac
.\\venv\\Scripts\\activate # Sur WindowsVoir requirements.txt.
pip install -r requirements.txtCréez un fichier .env à la racine avec les informations suivantes :
# ----------- Base de données Azure SQL -----------
DB_SERVER="adventureworks-server-hdf.database.windows.net"
DB_NAME="FABADI-db"
DB_USER="jvcb"
DB_PASSWORD="cbjv592023!"
DB_PORT=1433
ODBC_DRIVER="ODBC Driver 18 for SQL Server"
# ----------- JWT & Auth -----------
SECRET_KEY='' # Keep empty
ALGORITHM="HS256"
ACCESS_TOKEN_EXPIRE_MINUTES=60
# ----------- Authentification Utilisateur -----------
USERNAME=Admin # Nom d'utilisateur pour la connexion
PASSWORD=Admin # Mot de passe en clair (utilisé pour le hachage si HASHED_PASSWORD est vide)
HASHED_PASSWORD='' # Keep empty
uvicorn app.main:app --reloadapi-crud/
├── app/
│ ├── __init__.py
│ ├── main.py # Entrée principale de l'application
│ ├── config.py # Configuration générale
│ ├── database.py # Gestion de la base de données
│ ├── models.py # Modèles SQLModel
│ ├── schemas.py # Schémas Pydantic
│ ├── auth/
│ │ ├── __init__.py
│ │ ├── auth.py # Gestion des tokens et utilisateurs
│ │ ├── security.py # Fonctions de hachage et vérification
│ │ ├── temp_hash.py # Génération de hachages de test
│ ├── routers/
│ ├── __init__.py
│ ├── products.py # Routes CRUD pour les produits
│ ├── auth_routes.py # Route pour l'authentification
├── .env # Fichier d'environnement
├── requirements.txt # Dépendances du projet
├── README.md # Documentation du projet