---
# System prepended metadata

title: TP Web-Serveur

---

# TP Web-Serveur

[ToC]

## :poop: :gun: :dog: Partie 1

### Quelles sont les fonctionnalités qui vous semblent importantes ?
* Rajouter une *gommette* à un élève donné.
* Ajouter un commentaire.
* Sauvegarder les *gommette* dans une base de donnée pour garder une trace des ajouts.
* Mettre en place un carnet numérique par élève.

### Quelles vont être les principales classes de votre application ?

>* Une classe **Gommette**
>* Une classe **Professeur**
>* Une classe **Elève**

### Quelles vont être les tables de votre base de données ? Vous pouvez produire un diagramme UML pour mettre au clair les jointures entre les tables, mais c'est facultatif.

Notre base de données possède les table suivantes:  Professeur | Gommette | Elève | Date | Commentaire
  
<!--
// Sweet Class Diagram
// -------------------

// Chain elements like this
[Professor]-0..*>[Student]
[Professor]-^[Personne]
[Student]-^[Personne]

// Add notes
//[Carnet]-[note: Aggregate Root ala DDD]

// Add more detail
[Student|- idStudent: int]
[Gommette|- couleur: Color;- Description: String]
[Professor|- idProfesseur: int|- createGommette(color: Color, desc: String): boolean;- deleteGommette(color: Color, desc: String): boolean;- updateGommette(targetColor: Color, targetDesc: String, newColor: Color, newDesc: String): boolean;- createStudent(student: Student): boolean;- deleteStudent(student: Student): boolean;- updateStudent(student: Student, firstname: String, lastname: String, birthdate: DateTime): boolean;- addStudentGommette(student: Student, gommette: Gommette, motif: String): boolean;- deleteStudentGomette(student: Student, gommette: Gommette, date: DateTime): boolean]
[Personne|- firstname: String;- lastname: String;- birthdate: DateTime;/ age: int]
[<<Enumeration>>; Color|GREEN;WHITE;RED]
-->
#### Diagramme UML correspondant
![Diagramme UML correspondant](https://i.imgur.com/dQkrO0e.png)


### Quelles solutions technologiques envisagez vous ?



## Partie 2
### Dans le TP précédent, nous avons défini nos entités, nos tables et les relations entre ces dernières. La dernière étape avant de commencer à coder est de définir la structure de notre site : comment les pages vont-elles être agencées, et quels seront leurs liens d'accès ?

* `GET /login` va afficher la mire de connexion et `POST /login` permet de se connecter
* `GET /students` pour récupérer la liste des élèves, `DELETE /students/:idStudent` pour supprimer un élève, `POST /students/:student` pour ajouter un élève, `PATCH /students/:idStudent` pour modifier un élève
* `GET /gommettes/:gommette` pour obtenir la liste des gommettes, `DELETE /gommettes/:gommette` pour supprimer une gommette, `POST /gommettes/:gommette` pour ajouter une gommette à la liste des gommettes, `PATCH /gommettes/:gommette` pour modifier une gommette
* `POST /students/:idStudent/:gommettes/:gommette` pour ajouter une gommette à un élève, `DELETE /students/:idStudent/:gommettes/:gommette` pour supprimer la gommette d'un élève
* `GET /students/idStudent/gommettes` pour lister les gommettes d'un élève, `GET /studentGommette/gommette/attributor` obtenir l'attributteur d'une gommette
* `GET /students/idStudent/gommettes` pour obtenir la liste des gommettes, `GET /students/idStudent/gommettes` obtenir l'attributteur d'une gommette