Files
html/generated/api-20260413-112012
2026-04-17 00:57:15 +02:00
..
2026-04-13 13:24:46 +02:00
2026-04-13 13:24:46 +02:00
2026-04-13 13:24:46 +02:00

API REST Complexe avec CRUD, Auth JWT, Validation, Pagination et Limitation de Taux

Ce projet est une API REST complete développée avec Python 3.9 et la bibliothèque FastAPI, utilisant PostgreSQL comme base de données. L'API propose des fonctionnalités de création, lecture, mise à jour et suppression de données (CRUD), d'authentification basée sur des jetons JWT, de validation des données, de pagination et de limitation de taux.

Installation

Avant de démarrer, vous devez avoir installées les dépendances nécessaires. Pour cela, exécutez la commande suivante dans votre terminal :

pip install fastapi uvicorn sqlalchemy psycopg2-binary pyjwt

Sauvegarder le schéma de la base de données

python schemas.py

Démarrer l'API

Téléchargez ce projet dans un environnement de codage ou sur votre serveur local, naviguez ensuite dans le dossier avec le terminal et exécutez la commande suivante pour lancer l'API :

uvicorn main:app --reload

Ouvrez maintenant un navigateur et rendez-vous à l'adresse http://localhost:8000/docs pour accéder à la documentation automatique de Swagger.

Utilisation

  1. S'identifier pour obtenir un token : curl -X 'POST' 'http://localhost:8000/auth/login' -H 'accept: application/json' -H 'Content-Type: application/json' -d '{"username": "admin", "password": "password"}'
  2. Utiliser le token obtenus pour faire des requêtes qui nécessitent une authentification.

API Endpoints

Authentification

  • POST /auth/login: Vérifie l'identifiant et le mot de passe d'un utilisateur et retourne un jeton JWT.
  • POST /auth/register: Crée un nouveau compte avec les informations fournies.

Utilisateurs

  • GET /users: Récupère la liste des utilisateurs, avec pagination par défaut limitée à 5.
  • GET /users/{id}: Récupère un utilisateur spécifique en fonction de son ID.
  • POST /users: Crée un nouveau utilisateur.
  • PUT /users/{id}: Met à jour un utilisateur existant.
  • DELETE /users/{id}: Supprime définitivement un utilisateur.

Produits

  • GET /products: Récupère la liste des produits, avec pagination par défaut limitée à 5.
  • GET /products/{id}: Récupère un produit spécifique en fonction de son ID.
  • POST /products: Crée un nouveau produit.
  • PUT /products/{id}: Met à jour un produit existant.
  • DELETE /products/{id}: Supprime définitivement un produit.

Commandes

  • GET /orders: Récupère la liste des commandes.
  • GET /orders/{id}: Récupère une commande en fonction de son ID.
  • POST /orders: Crée une nouvelle commande.
  • DELETE /orders/{id}: Supprime définitivement une commande.

Structure du Projet

Le projet est organisé en plusieurs fichiers :

  • schemas.py : Ce fichier contient les migrations pour la base de données.
  • main.py : Ce fichier contient l'application FastAPI définie ici.
  • models.py : Les informations sur les tables dans la base de données sont ici.
  • routers.py : les codes pour les API Endpoints et leurs vues sont ici.
  • .env : informations sensibles concernant la connexion à la base de données.

Dans routers.py, nous avons deux vues, UserRouter et le ProductRouter pour gérer les informations user et Product. Le code a été réparti entre les deux fichiers pour une meilleure organisation et réutilisabilité.

FAQ

Quelle est la différence entre GET /users et GET /products ?

GET /users Récupère la liste des utilisateurs, alors que GET /products Récupère la liste des produits.

Comment puis-je utiliser cette API ?

Pour utiliser ces API, vous pouvez utiliser un client tel que postman pour envoyer des requêtes HTTP vers l'API, le token que je récupsère doit être insérer au header de la requête sous la clé Authorization.

Pour une utilisation réaliste, l'authentification et l'autorisation de l'API nécessitent une implémentation plus complexe, notamment en utilisant des techniques telles que OAuth, JWT, ou des API key pour protéger les données sensibles.