TP gRPC

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 gRPC.
1. TP vert

|
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 !
|
|
Tip
|
Pour tester au fur et à mesure vous pouvez éventuellement créer un client test pour chaque service. |
Voici les étapes à suivre pour ce TP :
-
Terminer l’écriture du service Movie en utilisant
gRPC -
Reprenez votre service REST
User, remplacez-y les requêtes REST versMoviepar des appels de procédures distantes en utilisant lesstubassociés. En effet,Userdevient un client gRPC et reste un serveur REST dans ce TP. -
Écrivez les fichiers d’API
protopour le serviceTimes -
Écrivez le code du service
Timeset testez ce code -
Reprenez votre service REST
Booking, remplacez-y les requêtes REST versTimespar des appels de procédures distantes en utilisant lesstubassociés. En effet,Bookingdevient un client gRPC et reste un serveur REST dans ce TP.
|
Tip
|
Vous pourrez aussi avoir besoin d’inclure from google.protobuf.json_format import MessageToJson pour utiliser la fonction MessageToJson permettant de transformer une réponse gRPC en format JSON.
|
2. TP bleu
Vous allez ici remplacer l’API de Booking par une API gRPC.

|
Important
|
Booking est à la fois un Service et un client en gRPC. User
est aussi à la fois un service et un client mais son service offre une API REST.
|
Écrivez le code du service Booking et testez ce code (qui doit appeler
le service Times en utilisant le stub correspondant).
|
Tip
|
Pour le service Booking vous aurez besoin de Nested types pour les
messages Protocol Buffers, voir https://developers.google.com/protocol-buffers/docs/proto#nested
|
3. 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 la documentation https://grpc.github.io/grpc/python/ |