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>.

results matching ""

    No results matching ""