5.9 KiB
5.9 KiB
TP TAA
TP2 Partie API REST
Compte rendu
Dans ce TP REST, nous avons implémenté les éléments suivants:
- Mapper pour convertir les entités vers les DTO et inversement
- Lombok afin de simplifier le code et éviter le code boilerplate (getters, setters, constructeurs, etc.)
- API REST pour exposer les différentes ressources
- Swagger UI pour documenter et tester facilement toutes les méthodes de l’API.
- DTO (Data Transfer Objects) afin d’éviter les problèmes de boucle infinie liés aux relations bidirectionnelles entre entités.
Execution du projet
Recharger les dépendances Maven :
mvn clean install
Lancer la base de données (Linux) : ./run-hsqldb-server.sh
Lancer le serveur par fichier src/main/java/fr.istic.taa.jaxrs/RestServer.java
Après le serveur est lancé, on a testé des appels API avec Insomnia et interface Swagger est accessible via:
http://localhost:8080/api
Diagramme de classe
classDiagram
Utilisateur "*" -- "*" Session
Session "*" -- "*" Quizz
Quizz "1" -- "1..*" Question
Utilisateur "1" -- "*" Quizz
Question "1" -- "1" Reponse
Reponse <|-- ReponseCourte
Reponse <|-- Choix
class Utilisateur {
-id : int
-name : String
-session : List<Session>
-email : String
-password : String
-quizzs : String
}
class Session{
-id : int
-codePIN : int
-quizzs : List<Quizz>
-utilisateurs : List<Utilisateur>
-theme : String
}
class Quizz{
-session: Session
-id : int
-utilisateur: Utilisateur
}
class Reponse{
-id : int
-question: Question
-reponses : ArrayList<String>
}
class Choix{
-choix : ArrayList<String>
}
class ReponseCourte{
-value : String
}
class Question{
-id : int
-reponse: Reponse
}
Utilisateur Resource
| Methode | URL | Description |
|---|---|---|
| GET | /utilisateur |
Retourne toute la liste de l'utilisateur |
| POST | /utilisateur/register |
S'incrire nouveaux utilisateur |
| GET | /utilisateur/login |
Se connecter |
| GET | /utilisateur/{id} |
Retourne l'utilisateur par id |
| GET | /utilisateur/{user_id}/session |
Retoune la liste de session que l'utilisateur attends |
| PUT | /utilisateur/{user_id}/add_session/{session_id} |
Ajoute un nouveau session à la liste de l'utilisateur |
| DELETE | /utilisteur/{user_id}/delete |
Supprime l'utilisateur |
Session Resource
| Methode | URL | Description |
|---|---|---|
| GET | /session |
Retourne toute la liste du session |
| GET | /session/{id} |
Retourne la session par id |
| GET | /session/{session_id}/quizzs |
Retourne la liste de quizzs |
| GET | /session/{session_id}/utilisateurs |
Retourne la liste de l'utilisateur |
| DELETE | /session/{session_id}/delete |
Supprime la session |
Quizz Resource
| Methode | URL | Description |
|---|---|---|
| GET | /quizz |
Retourne toute la liste du quizz |
| GET | `/quizz/{quizz_id}/questions | Retourne toutes questions du quizz |
| GET | /quizz/{quizz_id}/add_question/{question_id} |
Ajoute une nouvuelle question au quizz |
| DELETE | /quizz/{quizz_id}/delete |
Suprrime le quizz |
| PUT | /quizz/{quizz_id}/deleteQ |
Supprime toute les questions de quizz |
Question Resource
| Methode | URL | Description |
|---|---|---|
| GET | /question |
Retourne toute la liste du question |
| POST | /question/addQuestion |
Créer une question |
| PUT | /question/{question_id}/changeQuestion |
Change l'énoncé de la question |
| GET | /question/{question_id}/getReponse |
retourne l'objet Reponse |
| DELETE | /question/{question_id}/deletReponses |
supprime toute les réponse correct |
| PUT | /question/{question_id}/addReponse |
Ajoute une réponse à Reponse |
| PUT | /question/{question_id}/setReponse/choix |
créer un nouvel objet Reponse de type Choix pour la question |
| PUT | /question/{question_id}/setReponse/reponseCourte |
créer un nouvel objet Reponse de type reponse courte pour la question |
| PUT | /question/{question_id}/addChoix |
rajoute un choix si Reponse est de type Choix |
Auteurs
-
Tuan Minh VU
-
Thibaut ROCHAS