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 versMovie
par des appels de procédures distantes en utilisant lesstub
associés. En effet,User
devient un client gRPC et reste un serveur REST dans ce TP. -
Écrivez les fichiers d’API
proto
pour le serviceTimes
-
Écrivez le code du service
Times
et testez ce code -
Reprenez votre service REST
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 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/ |