TP #7 WEB API
Créer les API suivantes :
Administrer Examen
API Lister les examens
GET /api/examens
Exemple de réponse :
[
{
"id" : 123,
"titre" : "Spring Core",
"classe" : {
"id" : 2,
"nom" : "D14 Java"
},
"quizz" : {
"id" : 12,
"titre" : "Core",
"nb_questions" : 13
}
},
{
"id" : 32,
"titre" : "Spring Data",
"classe" : {
"id" : 2,
"nom" : "D14 Java"
},
"quizz" : {
"id" : 13,
"titre" : "Data",
"nb_questions" : 120
}
}
]
API Créer un examen
POST /api/examens
Corps de la requête :
{
"classe_id" : 1,
"quizz_id": 1,
"titre" : "Spring Core"
}
Réponse :
{
"id" : 32,
"titre" : "Spring Core",
"classe" : {
"id" : 1,
"nom" : "D14 Java"
},
"quizz" : {
"id" : 1,
"titre" : "Data",
"nb_questions" : 120
}
API Supprimer un examen
DELETE /api/examens/<id_examen>
Administrer Quizz
API Lister les quizz
GET /api/quizzes
Exemple de réponse :
[
{
"id" : 123,
"titre" : "Spring Core",
"nb_questions" : 13
},
{
"id" : 124,
"titre" : "Spring Data",
"nb_questions" : 130
}
]
API Créer un quizz
POST /api/quizzes
Corps de la requête :
{
"titre" : "Spring Core",
"questions": [1, 13, 14, 34]
}
Le paramètre questions
est opionnel.
Exemple de réponse :
{
"id" : 124,
"titre" : "Spring Core",
"nb_questions" : 1
}
API Ajouter des questions à un quizz
PATCH /api/quizzes/<id_quizz>/questions
Corps de la requête :
[1, 3, 34]
API Supprimer un quizz
DELETE /api/quizzes/<id_quizz>
.
Administrer Questions
API Lister les questions
GET /api/questions
Exemple de réponse :
[
{
"id": 1,
"titre" : "Java est-il un langage de programmation ?",
"options" : [
{
"id": 1,
"libelle" : "Oui",
"ok" : true
},
{
"id": 2,
"libelle" : "Non",
"ok" : false
}
]
},
{
"id": 2,
"titre" : "Java EE est-il un langage de programmation ?",
"options" : [
{
"id": 1,
"libelle" : "Oui",
"ok" : false
},
{
"id": 2,
"libelle" : "Non",
"ok" : true
}
]
}
]
API Créer une question
POST /api/questions
Corps de la requête :
{
"titre" : "Java EE est-il un langage de programmation ?",
"options" : [
{
"libelle" : "Oui",
"ok" : false
},
{
"libelle" : "Non",
"ok" : true
}
]
}
API Créer plusieurs questions
POST /api/questions-collection
:
Corps de la requête :
```json
[
{
"titre" : "Java EE est-il un langage de programmation ?",
"options" : [
{
"libelle" : "Oui",
"ok" : false
},
{
"libelle" : "Non",
"ok" : true
}
]
},
{
"titre" : "Java est-il un langage de programmation ?",
"options" : [
{
"libelle" : "Oui",
"ok" : true
},
{
"libelle" : "Non",
"ok" : false
}
]
}
]
Corps de la réponse :
[
{
"id": 1,
"titre" : "Java est-il un langage de programmation ?",
"options" : [
{
"id": 1,
"libelle" : "Oui",
"ok" : true
},
{
"id": 2,
"libelle" : "Non",
"ok" : false
}
]
},
{
"id": 2,
"titre" : "Java EE est-il un langage de programmation ?",
"options" : [
{
"id": 1,
"libelle" : "Oui",
"ok" : false
},
{
"id": 2,
"libelle" : "Non",
"ok" : true
}
]
}
]
API Supprimer une question
DELETE /api/questions/<id_question>
.
Administrer Sondage
API Lister les sondages
GET /api/sondages
[
{
"id": 1
"titre" : "Comment avez-vous trouver le cours Java",
"classe" : {
"id" : 1,
"nom" : "D14 Java"
},
"nb_options": 3
},
{
"id" : 2
"titre" : "Comment avez-vous trouver le cours HTML ?",
"classe" : {
"id" : 1,
"nom" : "D14 Java"
},
"nb_options": 4
}
]
API Détail d'un sondage
GET /api/sondages/<id_sondage>
{
"id" : 1
"titre" : "Comment avez-vous trouver le cours Java",
"classe" : {
"id" : 1,
"nom" : "D14 Java"
},
"options" : [
{
"id" : 12,
"libelle" : "Top",
"description" : "..."
},
{
"id" : 13,
"libelle" : "Moyen",
"description" : "..."
}
]
}
API Créer sondage
POST /api/sondages
{
"titre" : "Comment avez-vous trouver le cours Java",
"classe_id" : 1,
"options" : [
{
"libelle" : "Top",
"description" : "..."
},
{
"libelle" : "Moyen",
"description" : "..."
}
]
}
Réponse :
{
"titre" : "Comment avez-vous trouver le cours Java",
"classe" : {
"id" : 1,
"nom" : "D14 Java"
},
"nb_options": 2
}
API Supprimer un sondage
DELETE /api/sondages/<id_sondage>
.
Administrer Classes
API Lister les classes
GET /api/classes
[
{
"id": 12,
"nom" : "D14 Java"
},
{
"id": 32,
"nom" : "D17 .NET"
}
]
API Détails d'une classe
GET /api/classes/<id_classe>
{
"id": 12,
"nom" : "D14 Java",
"stagiaires" : [
{
"id" : 1,
"nom" : "DUCODE",
"prenom" : "Julie",
"photo_url" : "https://1",
"email" : "julie@ducode.fr"
},
{
"id" : 2,
"nom" : "DUCODE",
"prenom" : "Edouard",
"photo_url" : "https://2",
"email" : "edouard@ducode.fr"
}
]
}
API Créer une classe
POST /api/classes
Corps de la réquête
{
"nom" : "D21 Java",
"stagiaires" : [1, 12, 34, 56]
}
Corps de la réponse :
{
"classe_id" : 123
}
API Supprimer une classe
DELETE /api/classes/<id_classe>
.
Administrer Duels
API Créer un Duel
POST /api/duels
Corps de la requête :
{
"stagaireA_id" : 12,
"stagaireB_id" : 13,
"quizz_id" : 12
}
Corps de la réponse :
{
"duel_id" : 122
}
API Lister duels
GET /api/duels
[
{
"id": 122,
"stagiaireA" : {
"id" : 2,
"nom" : "DUCODE",
"prenom" : "Edouard"
},
"stagiaireB" : {
"id" : 1,
"nom" : "DUCODE",
"prenom" : "Julie"
},
"quizz" : {
"id" : 12,
"titre" : "Spring Core",
"nb_questions" : 13
}
},
{
"id": 1223,
"stagiaireA" : {
"id" : 2,
"nom" : "DUCODE",
"prenom" : "Edouard"
},
"stagiaireB" : {
"id" : 1,
"nom" : "DUCODE",
"prenom" : "Julie"
},
"quizz" : {
"id" : 13,
"titre" : "Spring Data",
"nb_questions" : 130
}
}
]
API Détails d'un duel
GET /api/duels/<id_duel>
{
"id": 122,
"stagiaireA" : {
"id" : 2,
"nom" : "DUCODE",
"prenom" : "Edouard",
"photo_url" : "https://2",
"email" : "edouard@ducode.fr"
},
"stagiaireB" : {
"id" : 1,
"nom" : "DUCODE",
"prenom" : "Julie",
"photo_url" : "https://1",
"email" : "julie@ducode.fr"
},
"quizz" : {
"id" : 12,
"titre" : "Spring Core",
"nb_questions" : 13
}
}
API Supprimer un duel
DELETE /api/duels/<id_duel>
.
Administrer Concours
API Créer concours
POST /api/concours
Corps de la requête :
{
"titre" : "Meilleur Développeur du mois de Juillet",
"participants" : [1, 12, 23],
"quizzes" : [1, 12]
}
Corps de la réponse :
{
"concours_id" : 1222
}
API Lister concours
GET /api/concours
[
{
"id" : 12,
"titre" : "Meilleur Développeur du mois de Juillet",
"nb_participants" : 12,
"nb_quizz" : 3
},
{
"id" : 12,
"titre" : "Meilleur Développeur du mois de Juin",
"nb_participants" : 12,
"nb_quizzes" : 3
}
]
API Détails d'un concours
GET /api/concours/<id_concours>
{
"id" : 12,
"titre" : "Meilleur Développeur du mois de Juillet",
"participants" : [
{
"id" : 2,
"nom" : "DUCODE",
"prenom" : "Edouard",
"photo_url" : "https://2",
"email" : "edouard@ducode.fr"
},
{
"id" : 1,
"nom" : "DUCODE",
"prenom" : "Julie",
"photo_url" : "https://1",
"email" : "julie@ducode.fr"
}
],
"quizzes" : [
{
"id" : 12,
"titre" : "Spring Core",
"nb_questions" : 13
},
{
"id" : 13,
"titre" : "Spring Data",
"nb_questions" : 11
}
]
}
API Ajouter un participant à un concours
POST /api/concours/<id_concours>/participants
Corps de la requête :
{
"participant_id":12
}
API Supprimer un concours
DELETE /api/concours/<id_concours>
.
Administrer Stagiaire
API Lister stagiaires
GET /api/stagiaires
Corps de la réponse :
[
{
"id" : 2,
"nom" : "DUCODE",
"prenom" : "Edouard",
"photo_url" : "https://2",
"email" : "edouard@ducode.fr"
},
{
"id" : 1,
"nom" : "DUCODE",
"prenom" : "Julie",
"photo_url" : "https://1",
"email" : "julie@ducode.fr"
}
]
GET /api/stagiaires?nom=DUCODE
(donner la possibilité de filtrer la liste par nom)
API Créer stagiaire
POST /api/stagiaires
Corps de la requête :
{
"nom" : "DUCODE",
"prenom" : "Edouard",
"photo_url" : "https://2",
"email" : "edouard@ducode.fr"
}
Corps de la réponse :
{
"stagiaire_id" : 1
}
API Modifier informations d'un stagiaire
PATCH /api/stagiaires/<id_stagiaire>
{
"email" : "super@dev.fr",
"photo_url" : "https://3"
}
API Supprimer un stagiaires
DELETE /api/stagiaires/<id_stagiaire>
.