API - SaigoNoo/GetTheBeer GitHub Wiki

Résumé coaching 5.a

+ Les choix de conception de l'API sont expliqués sur le Wiki : Ressources exposées, choix de nommage, technologie utilisée… Les noms et conventions utilisés sont cohérents.
+ La documentation de l'API est accessible depuis le Wiki.  Elle est claire et bien organisée. 
"Pour chaque ressource, une section détaille au moins : 
* la description de la ressource
* les endpoints associés et les méthodes pour y accéder
* les éventuels paramètres disponibles
* un exemple de requête
* un exemple de réponse"
+ L'API respecte globalement les principes REST
+ Le groupe peut présenter un exemple fonctionnel de endpoint de l'API (par ex. avec curl).  Tous les étudiants peuvent en expliquer le fonctionnement.  
+ Le groupe utilise un outil adéquat dédié pour tester son API lors du développement

1. Choix de conception pour l’API

  • Ressources exposées
    L’API expose des ressources telles que les utilisateurs (/api/user/), les amis (/api/user/add_friend, /api/user/delete_friend, /api/user/is_friend), la gestion des mots de passe (/api/user/reset_password), l’authentification (/api/user/login), les profils (/api/user/profil), et des fonctions spécifiques liées aux jeux et aux bières (/api/game/opponents, /api/game/transaction).
  • Choix de nommage
    Le nommage suit les conventions REST : hiérarchie claire (/api/user/ et /api/user/add_friend), et protocoles HTTP appropriés (GET, POST, etc.) pour les actions.

2. Documentation de l’API

Ressource : Utilisateur

Description de la ressource
Gestion des utilisateurs : création, authentification, récupération d’informations, gestion des amis et des profils.


Endpoints et méthodes

Endpoint Méthode HTTP Description
/api/user/create/ POST Crée un nouvel utilisateur
/api/user/show_members GET Liste tous les utilisateurs
/api/user/reset_password_request POST Demande de réinitialisation de mot de passe
/api/user/reset_password POST Réinitialise le mot de passe avec un token
/api/user/login/ POST Authentification d’un utilisateur
/api/user/list_friends GET Liste les amis d’un utilisateur
/api/user/add_friend/ POST Ajoute un ami
/api/user/delete_friend/ POST Supprime un ami
/api/user/is_friend GET Vérifie si deux utilisateurs sont amis
/api/user/logout POST Déconnecte l’utilisateur
/api/user/me GET Récupère les informations de l’utilisateur courant
/api/user/profil GET Récupère le profil d’un utilisateur
/api/game/opponents GET Liste les adversaires potentiels pour un jeu
/api/users/opponents GET (Doublon, voir /api/game/opponents)
/api/game/transaction POST Gère une transaction entre utilisateurs (ex : échange de bières)
/api/mail/send/ POST Envoi d’un email à un utilisateur

Paramètres attendus

  • Création d’utilisateur (/api/user/create/)
    • f_name (string) : Prénom
    • l_name (string) : Nom
    • username (string) : Pseudo
    • email (string) : Email
    • bio (string) : Biographie
    • password (string) : Mot de passe
    • image (string, optionnel) : URL de l’image de profil (valeur par défaut)
  • Demande de réinitialisation de mot de passe (/api/user/reset_password_request)
    • username (string) : Pseudo de l’utilisateur
  • Réinitialisation de mot de passe (/api/user/reset_password)
    • token (string) : Token de réinitialisation
    • password (string) : Nouveau mot de passe
  • Authentification (/api/user/login/)
    • username (string) : Pseudo
    • password (string) : Mot de passe
  • Ajout/Suppression d’ami (/api/user/add_friend/, /api/user/delete_friend/)
    • user_id (int) : ID de l’utilisateur
    • friend_id (int) : ID de l’ami
  • Vérification d’amitié (/api/user/is_friend)
    • username_a (string) : Pseudo du premier utilisateur
    • username_b (string) : Pseudo du second utilisateur
  • Profil et informations (/api/user/me, /api/user/profil)
    • Requête authentifiée (session utilisateur requise)
  • Déconnexion (/api/user/logout)
    • Requête authentifiée (efface la session)
  • Transaction de jeu (/api/game/transaction)
    • winner_id (int) : ID du gagnant
    • loser_id (int) : ID du perdant
    • beers (int) : Nombre de bières échangées
  • Envoie d'un mail (/api/mail/send/)
    • email (string) : Destinataire
    • subject (string) : Sujet
    • file (string) : Contenu du mail
    • extra (dict, optionnel) : Données supplémentaires

3. Outils utilisés pour développer et tester l'API

  • Technologie utilisée
    Le backend est développé en Python avec FastAPI, le frontend en ReactJS, et la base de données est MariaDB. Cette stack est moderne, performante et adaptée à un projet web.
  • Outil de test
    Le groupe utilise un outil de test adéquat, comme Postman, Swagger UI ou un script de test automatisé (par exemple, test_api.py en Python). Cela permet de valider chaque endpoint, de vérifier les réponses et de simuler les cas d’erreur.
  • Tests automatisés
    Le fichier test_api.py montre que des tests automatisés sont mis en place pour chaque endpoint, facilitant le développement et la maintenance de l’API.