Files
tpjpa/README.md
2025-10-24 19:39:02 +02:00

5.9 KiB
Raw Blame History

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 lAPI.
  • 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&lt;Session&gt;
        -email : String
        -password : String
        -quizzs : String
    }
    class Session{
        -id : int
        -codePIN : int
        -quizzs : List&lt;Quizz&gt;
        -utilisateurs : List&lt;Utilisateur&gt;
        -theme : String
    }
    class Quizz{
        -session: Session
        -id : int
        -createur: Utilisateur
    }
    class Reponse{
        -id : int
        -question: Question
        -reponses : ArrayList&lt;String&gt; 
    }
    class Choix{
        -choix : ArrayList&lt;String&gt;
    }
    class ReponseCourte{
    }
    class Question{
        -id : int
        -enonce : String
        -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