"google/protobuf/struct.proto" est-il la méthode optimale pour transmettre du JSON dynamique via GRPC ?
Contexte :
Vous avez implémenté un serveur et un client GRPC (tous deux en Go) et recherchez des conseils si l'utilisation de "golang/protobuf/struct" est la stratégie la plus efficace pour fournir des données JSON dynamiques.
Solution :
Basée sur le "User.proto" fourni fichier, l'utilisation de "google.protobuf.Struct" semble être une bonne approche.
Alternative Solutions :
1. Structures Protobuf personnalisées**
La définition de « Détails » en tant que structure dans le fichier proto a été suggérée, mais cette approche nécessite une génération et une maintenance de code supplémentaires, ce qui peut être fastidieuse.
2. Conversion et encapsulation JSON
Avant la transmission GRPC, convertir la carte "Détails" au format JSON, l'encapsuler en tant que message protobuf et la désérialiser côté serveur était une autre option. Cependant, cela implique un traitement supplémentaire et est moins efficace que l'utilisation du type "Struct" prédéfini.
Solution d'Anuj :
Bien que fonctionnelle, cette solution est quelque peu complexe et comprend Sérialisation et désérialisation JSON manuelles.
Luke's Solution :
Cette alternative est succincte mais implique toujours plus de transformations que nécessaire, faisant passer les données cartographiques à travers plusieurs formats.
Approche optimale :
La solution exploitant le package "structpb" introduit dans Go simplifie la création d'instances protobuf "Struct" à partir de cartes Go standards. Cette méthode offre les avantages suivants :
Cette approche correspond à l'exemple fourni dans votre fichier client.go, où un "Struct" est instancié directement à partir d'une carte à l'aide de la fonction "structpb.NewStruct".
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!