Ce chapitre décrit comment utiliser Protocol Buffers avec la conception d'API. Pour simplifier l'expérience des développeurs et améliorer l'efficacité de l'exécution, les API gRPC devraient utiliser Protocol Buffers version 3 (proto3) pour la définition de l'API.
Protocol Buffers est un langage de définition d'interface (IDL, Interface Definition Language) simple et indépendant du langage et de la plate-forme, qui permet de définir des schémas de structure de données et des interfaces de programmation. Il est compatible avec les formats binaires et filaires de texte, et fonctionne avec de nombreux protocoles filaires différents sur différentes plates-formes.
Proto3 est la dernière version de Protocol Buffers et inclut les modifications suivantes de proto2 :
- La présence d'un champ, également appelée
hasField
, est supprimée par défaut pour les champs primitifs. Un champ primitif non défini a une valeur par défaut définie par le langage.- La présence d'un champ de message est toujours disponible. Elle peut être testée à l'aide de la méthode
hasField
générée par le compilateur ou être comparée à la valeur "null" ou "sentinel" définie par la mise en œuvre. - À partir de la version 3.14 de la couche tampon de protocole, les champs primitifs peuvent faire la distinction entre la valeur par défaut et la valeur non définie à l'aide du mot clé
optional
, bien que cette pratique soit généralement déconseillée.
- La présence d'un champ de message est toujours disponible. Elle peut être testée à l'aide de la méthode
- La valeur par défaut définie par l'utilisateur pour les champs n'est plus disponible.
- Les définitions de l'énumération doivent commencer par la valeur d'énumération zéro.
- Les champs obligatoires ne sont plus disponibles.
- Les extensions ne sont plus disponibles. Utilisez plutôt
google.protobuf.Any
.- Une exception spéciale est accordée à
google/protobuf/descriptor.proto
pour des raisons de rétrocompatibilité et de compatibilité avec les environnements d'exécution.
- Une exception spéciale est accordée à
- La syntaxe de groupe est supprimée.
La suppression de ces fonctionnalités a pour but de rendre les conceptions d'API plus simples, plus stables et plus performantes. Par exemple, il est souvent nécessaire de filtrer certains champs avant de consigner un message, par exemple en supprimant des informations sensibles. Cela ne serait pas possible avec des champs obligatoires.
Consultez la section Protocol Buffers pour plus d'informations.