Protocol Buffers v3

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 sur le terrain, également appelée hasField, n'est pas disponible pour les champs primitifs. Un champ primitif non défini a une valeur par défaut définie par la langue.
    • 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.
  • 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 google.protobuf.Any à la place.
    • 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.
  • 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.