Skip to content

API du Projet

nmartou edited this page Aug 27, 2021 · 14 revisions

1) Présentation de l'API

Pour notre API, nous avons choisi symfony, car nous utilisons déjà ce framework pour le développement de notre site web et que celui-ci prend également en charge toutes les interactions avec la base de données dont nous avons besoin pour le création de notre API.

2) Règles de nommage pour notre API.

snake_case

Pour notre API, nous avons décidé d'utiliser la méthode de nommage "snake_case" car il existe très peu de contextes dans lesquels elle est incompatible.
Cette méthode se caractérise par le fait que les mots sont séparé par un underscore « _ ».

3) Listing des implémentation dans l'API.

3.1-1) /api/user : Permet l'obtention des information des utilisateurs du site

Utilisation

L'api user est utilisé un peu partout dans le projet et sert de base dans l'obtention des données des utilisateurs du site.

Exemple de retour de requête

api_user

3.1-2) register : Permet l'inscription des différents utilisateurs dans la Base de données.

Scénario

En tant qu'utilisateur non connecté, je souhaite pouvoir fournir, lors de mon inscription, mon nom et prénom, mon adresse mail et mon adresse afin de faciliter les échanges avec le professeur.

Paramètres

Les paramètres sont les différents éléments remplis lors du formulaire par l'utilisateur lors de son inscription. Ces données seront envoyées sous format JSON.

Critères d'acceptation

Pur valider cette étape, les données du nouvel utilisateur doivent être correctement enregistrées et envoyées vers la base de données, elle doit également envoyer le nouvel utilisateur vers la page de connexion.
Un message d'erreur apparait lorsque l'utilisateur tente d'envoyer le formulaire incomplet.

3.2) login : Permet la connexion des différents utilisateurs au site.

Scénario

En tant qu'étudiant, je souhaite pouvoir me connecter avec mes identifiants créés lors de l'inscription afin d'accéder à mon interface dédiée.

Paramètres

Les paramètres sont l'identifiant et le mot de passe entrés par l'utilisateur dans le formulaire de connexion.

Critères d'acceptation

Si ceux-ci sont déjà enregistrés et que le mot de passe proposé est identique à celui-ci enregistré, la connexion sera autorisée.
Un message d'erreur doit apparaitre lorsque l'utilisateur n'entre pas correctement le mot de passe.

3.3) modification_user : Permet aux élèves inscrits de modifier leurs "fiches" visibles par le professeur.

Scénario

En tant qu'étudiant, je souhaite pouvoir modifier certaines informations de mon compte afin de conserver mes données personnelles à jour.

Paramètres

Les paramètres sont les nouvelles données modifiées par l'élève dans le formulaire de modification. Ces nouvelles données seront envoyés sous format JSON.

Critères d'acceptation

Les nouvelles données entrées par l'utilisateur sont enregistrées et vont directement remplacer celles de l'utilisateur. Suite à cette modification, l'utilisateur est retourné vers son profil.
Un message de succès s'affiche sur la page du profil suite aux modifications apportées à l'utilisateur.

3.4) users : Permet au professeur d'avoir accès à une liste de ses différents élèves.

Scénario

En tant que professeur, je souhaite pouvoir accéder à une fiche étudiante par élève afin de faciliter l'accès aux informations relatives des élèves.

Paramètres

Pas de paramètres utilisés. Les réponses envoyées par la base de données seront au format JSON.

Critères d'acceptation

Le professeur a accès à une liste de fiches correspondant à chaque élève sur lesquelles le professeur peut cliquer pour accéder à des informations complémentaires.

3.5) dispos : Permet aux utilisateurs d'avoir accès aux différents disponibilités du professeur.

Scénario

En tant qu'étudiant, je souhaite pouvoir avoir accès à une liste avec toutes les disponibilités du professeur.

Paramètres

Pas de paramètres utilisés. Les réponses envoyées par la base de données seront au format JSON.

Critères d'acceptation

Les élèves ont accès à une page sur laquelle ils peuvent visualiser facilement toutes les disponibilités du professeur.

3.6) ajout_dispos : Permet au professeur de donner ces possibilités pour les prises de rendez-vous.

Scénario

En tant que professeur, je souhaite pouvoir donner mes disponibilités du mois afin de permettre la prise de rendez-vous pour les élèves.

Paramètres

Le/les paramètre(s) sera/seront les dates proposées par le professeur dans un formulaire. Ces différentes données seront envoyées au format JSON

Critères d'acceptation

Lors de l'enregistrement de ces disponibilités dans la base de données, celles-ci seront complétés par une colonne "disponible" qui sera fixée à True par défaut et qui passera à False lorsqu'un élève prendra cette plage horaire (voir prochain point). Un message d'erreur devra apparaitre lorsque le formulaire ne sera pas correctement complété.

3.7) prise_dispo : Permet aux élèves de prendre une plage horaire proposée par le professeur.

Scénario

En tant qu'étudiant, je souhaite pouvoir sélectionner une plage horaire disponible afin de prendre rendez-vous avec le professeur.

Paramètres

Le/les paramètres utilisé(s) est/sont la/les date(s) choisie(s) par l'élève dans un formulaire de prise de rendez-vous.

Critères d'acceptation

Lorsqu'un élève sélectionnera une date proposée par le professeur, la disponibilité de celle-ci dans la base de données passera à False. Un message d'erreur devra apparaitre lorsque le formulaire ne sera pas correctement complété.

3.8) messages : Permet aux utilisateurs d'afficher l'ensemble de leur messages.

Scénario

En tant qu'élève je souhaite pouvoir accéder à une messagerie afin de proposer des rendez-vous au professeur et d'échanger avec celui-ci.

Paramètres

Le paramètre utilisé est l'identifiant de l'utilisateur. Les données seront envoyées par la base de données au format JSON.

Critères d'acceptation

La base de données enverra l'ensemble des messages correspondant à l'identifiant de l'utilisateur. Un message indique si l'utilisateur ne possède aucun message.
L'utilisateur aura également la possibilité d'envoyer un message au professeur depuis sa messagerie.

3.9) envoi_messages : Permet aux utilisateurs d'envoyer des messages à d'autres utilisateurs.

Scénario

En tant qu'utilisateur, je souhaite pouvoir envoyer un message à un autre élève ou au professeur afin d'échanger avec eux.

Paramètres

Les paramètres utilisés sont l'identifiant cible ainsi que le message entrés par la source. Les données envoyées seront au format JSON.

Critères d'acceptation

Le message ira s'ajouter à ceux de la cible dans la base de données. Un bouton d'envoi de message est présent dans la messagerie de l'élève et lui permet d'envoyer un message plus rapidement au professeur.

3.10) del_messages : Permet aux utilisateurs de supprimer des messages.

Scénario

En tant qu'utilisateur, je souhaite pouvoir supprimer certains messages de ma messagerie afin de faciliter la lecture de mes nouveaux messages.

Paramètres

Les paramètres utilisés seront l'identifiant de l'utilisateur ainsi que les messages qu'ils désire supprimer. Les données envoyées seront au format JSON.

Critères d'acceptation

un petit bouton de suppression est présent à coté de chaque message et permet la suppression directe de la base de données et de la messagerie.

3.11) ajout_faq : Permet au professeur d'ajouter une question - réponse à la zone FAQ de sa page vitrine.

Scénario

En tant que professeur, je souhaite pouvoir gérer l'espace de FAQ comme je le souhaite afin de fournir certaines infos aux utilisateurs non connectés.

Paramètres

Les paramètres utilisés seront la question entrée par le professeur dans un formulaire et sa réponse également entrée par le professeur dans ce même formulaire. Les données envoyées seront au format JSON.

Critères d'acceptation

Le professeur a la possibilité de rajouter une question ainsi que sa réponse sur la page FAQ de son site via une page accessible depuis son "espace prof". Cette question/réponse sera directement enregistrée dans la base de données. Un message d'erreur apparaitra si le formulaire n'est pas correctement complété.

3.12) ajout_avis : Permet aux utilisateurs de laisser un avis sur la page vitrine du professeur.

Scénario

En tant qu'utilisateur, j'aimerais pouvoir donner mon avis concernant les cours du professeur afin de fournir de nouvelles informations aux utilisateurs non-inscrits.

Paramètres

Les paramètres utilisés sont l'identifiant de l'utilisateur ainsi que son message qui seront directement enregistrés dans la base de données. Les données seront envoyées au format JSON.

Critères d'acceptation

Une page de commentaires/avis est accessible depuis la page d'accueil du site, l'ajout de commentaire y est disponible uniquement pour les personnes connectées et un message d'erreur apparait si le formulaire n'est pas correctement complété.

3.13) dispo_delete : Permet au professeur la suppression d'une plage horaire disponible.

Scénario

En tant que professeur, j'aimerais pouvoir supprimer une plage horaire mise à disposition afin de pouvoir retirer une erreur ou changer d'avis.

Paramètres

L'identifiant de la plage horaire disponible est envoyé en paramètre.

Critères d'acceptation

Il faut au moins une plage horaire avec son identifiant.

3.14) dispo_all : Récupère toutes les plages horaires pour vérifier la possibilité d'un ajout

Scénario

En tant que professeur, je souhaite pouvoir récupérer tous les plages horaires afin de vérifier qu'il m'est possible d'ajouter une nouvelle plage sans que ça chevauche une plage horaire déjà prévue.

Critères d'acceptation

Il faut avoir choisit une nouvelle plage horaire et avoir déjà déposé d'anciennes plages horaires.

3.15) reservations: Récupère tous les rendez-vous

Scénario

En tant que professeur, je souhaite pouvoir récupérer tous les rendez-vous afin de connaitre mes rendez-vous.

Critères d'acceptation

Il faut que des plages horaires aient été mises à disposition et que des élèves les aient réservées.

3.16) ressources: Récupère les informations des fichiers attribués à un élève par le professeur

Scénario

En tant qu'utilisateur connecté en tant qu'élève, je souhaite pouvoir récupérer tous les informations concernant les fichiers qui me sont mis à disposition par le professeur ainsi qu'un lien pour pouvoir les télécharger.

3.17) depot_post : Poste les informations lié au fichier et le fichier sur la base de données

Scénario

En tant que professeur, je souhaite pouvoir déposer des ressources en ligne afin de faciliter l'apprentissage de chaque élève.

Critères d'acceptation

Tous les champs disponibles doivent être remplis et l'élève sélectionné doit exister.

3.18) api_user_calendrier : Récupère tous les rendez-vous de l'élève

Scénario

En temps qu'élève, je souhaite pouvoir observer mes rendez-vous enregistrés dernièrement afin d'être informé de ce que j'ai inscrit.

4) Documentation et testing de l'API

Thunder Client

Thunder Client est une extension de Visual Studio Code pour le développement d'API.
Nous avons choisi d'utiliser cet outil très pratique afin de tester nos API.

Clone this wiki locally