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énoml_name
(string) : Nomusername
(string) : Pseudoemail
(string) : Emailbio
(string) : Biographiepassword
(string) : Mot de passeimage
(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éinitialisationpassword
(string) : Nouveau mot de passe
- Authentification (
/api/user/login/
)username
(string) : Pseudopassword
(string) : Mot de passe
- Ajout/Suppression d’ami (
/api/user/add_friend/
,/api/user/delete_friend/
)user_id
(int) : ID de l’utilisateurfriend_id
(int) : ID de l’ami
- Vérification d’amitié (
/api/user/is_friend
)username_a
(string) : Pseudo du premier utilisateurusername_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 gagnantloser_id
(int) : ID du perdantbeers
(int) : Nombre de bières échangées
- Envoie d'un mail (
/api/mail/send/
)email
(string) : Destinatairesubject
(string) : Sujetfile
(string) : Contenu du mailextra
(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 fichiertest_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.