
1. Description
Nous allons concevoir une petite application permettant de gérer une salle de cinéma, et les réservations des utilisateurs.
Il s’agit d’une application jouet et peu réaliste. Cette application est composée de 4 micro-services :
-
Movieest le micro-service responsable de la gestion des films du cinéma. Il contient et gère une petite base de donnéesjsoncontenant la liste des films disponibles avec quelques informations sur les films. -
Scheduleest le micro-service responsable des jours de passage des films dans le cinéma. Il contient et gère une petite base de donnéesjsoncontenant la liste des dates avec l’ensemble des films disponibles à cette date. -
Bookingest le micro-service responsable de la réservation des films par les utilisateurs. Il contient et gère une petite base de donnéesjsoncontenant une entrée par utilisateur avec la liste des dates et films réservés.Bookingfait appel àSchedulepour connaître et vérifier que les créneaux réservés existent bien puisqu’il ne connait pas lui-même les créneaux des films. -
Userest le micro-service est le micro-service qui servirait typiquement à authentifier les utilisateurs. Il contient et gère une petite base de donnéesjsonavec la liste des utilisateurs.
Le repo de base pour faire ce TP se trouve ici : https://github.com/IMTA-FIL/UE-AD-A1-REST
2. Tout en REST !

Dans un premier temps et pour y aller pas à pas, il peut être une bonne idée de coder tous les services avec une API REST dans un premier temps. Pour aller plus vite et passer plus rapidement à GraphQL, vous pouvez ne coder qu’une partie des routes REST pour Movie et Booking.
-
Coder chacun des services pour permettre tout simplement d’accéder, d’ajouter ou de supprimer des éléments de leur petite base de données
json(CRUD). Pas d’update nécessaire surBookingetSchedule.-
Certains points d’entrée ont besoin d’intéragir avec d’autres services, par exemple à l’ajout d’une réservation le service
Bookingdoit vérifier auprès deScheduleque la date réservée pour le film est correcte (d’où la flèche deBookingversSchedule). -
Soyez logique ! par exemple, il ne parait pas adapté de pouvoir accéder à toutes les réservations de tous les utilisateurs si on n’est pas admin.
-
-
Écrire les documentations OpenAPI associées à vos services avec des exemples et avec la description des données en entrée et en sortie.
|
Important
|
Pour coder Booking vous aurez besoin d’appeler d’autres services par le biais de leur API REST. Pour cela, vous utiliserez le paquet requests (déjà présent dans requirements.txt) et utilisez la fonction get (ou post). Voir ici
|
3. GraphQL

Le but de ce TP est de venir remplacer les APIs de Movie et Booking par des API GraphQL et de modifier en conséquence les appels faits par Booking et le mock du frontend.
-
Terminer la réécriture du service
Movieen GraphQL et le tester -
Modifier le service
Bookingpour faire des requêtes GraphQL et non plus REST surMovie -
Réécrivez le service
Bookingen GraphQL et le tester
|
Tip
|
A noter qu’une requête GraphQL est une simple requête HTTP/1.1 avec la
méthode POST. Vous pouvez donc appeler le service Movie en utilisant la méthode requests.post. Attention touefois une subtilité est présente pour envoyer le body de la requête GraphQL response = requests.post("http://movie:3200/graphql",json={'query': query}).
|