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. 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. TP vert
1.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
Movie
en GraphQL et le tester -
Modifier le service
User
pour 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}) .
|
1.2. Partie 2 - gRPC
Les services Booking
et Times
vont désormais offrir des API gRPC.
-
Écrivez les fichiers d’API
proto
pour le serviceTimes
. -
Écrivez le code du service
Times
et testez ce code (avec un client gRPC, ou avec Postman dans les versions récentes) -
Écrivez les fichiers d’API
proto
pour le serviceBooking
. -
Écrivez le code du service
Booking
et 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 versTimes
par des appels de procédures distantes en utilisant lesstub
associés. En effet,Booking
devient un serveur ET un client gRPC. -
Reprenez votre service REST
User
, remplacez-y les requêtes REST versBooking
par des appels de procédures distantes en utilisant lesstub
associés. En effet,User
devient 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 !
|
2. TP rouge
Allez plus loin dans l’utilisation de gRPC
en utilisant les appels
asynchones des procédures distantes et l’utilisation de futures
. Vérifiez
que les appels asynchrones fonctionnent bien.
Tip
|
voir ce lien https://github.com/grpc/grpc/issues/16329 |