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

119 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```mermaid
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