TP API mixtes

Le but de ce TP est de construire le même ensemble de services que dans le TP
REST, à savoir : Movie, Booking, Times et User. Cette fois certaines API seront écrites en GraphQL et en gRPC. Nous obtenons donc une application avec des API mixtes. Si vous ne l’avez pas fait lors des tutoriels, téléchargez le dépôt de code de base (le même que pour le tuto GraphQL) pour ce TP : https://github.com/IMTA-FIL/UE-AD-A1-MIXTE

1. Partie 1 - GraphQL
Le but de ce TP est de venir remplacer l’API de Movie par une API GraphQL et de modifier en conséquence les appels faits par le service User.
-
Réécrivez votre service
Movieen GraphQL et le tester -
Modifier le service
Userpour faire des requêtes GraphQL et non plus REST
|
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}).
|
2. Partie 2 - gRPC
Les services Booking et Times vont désormais offrir des API gRPC.
-
Écrivez les fichiers d’API
protopour le serviceTimes. -
Écrivez le code du service
Timeset testez ce code (avec un client gRPC, ou avec Postman dans les versions récentes) -
Écrivez les fichiers d’API
protopour le serviceBooking. -
Écrivez le code du service
Bookinget testez ce code (avec un client gRPC, ou avec Postman dans les versions récentes) -
Reprenez votre service gRPC
Booking, remplacez-y les requêtes REST versTimespar des appels de procédures distantes en utilisant lesstubassociés. En effet,Bookingdevient un serveur ET un client gRPC. -
Reprenez votre service REST
User, remplacez-y les requêtes REST versBookingpar des appels de procédures distantes en utilisant lesstubassociés. En effet,Userdevient un client gRPC et reste un serveur REST.
|
Important
|
Toute modification de l’API gRPC (fichier proto) nécessite une recompilation du fichier proto concerné et une mise à jour des fichiers générés côté serveur ET côté client !
|