ToB企服应用市场:ToB评测及商务社交产业平台

标题: protobuf [打印本页]

作者: 小秦哥    时间: 2024-6-16 22:11
标题: protobuf
模板
  1. syntax = "proto3"; // 指定 protobuf 的版本  
  2.   
  3. package example; // 定义包名  
  4.   
  5. // 导入其他 protobuf 文件  
  6. import "google/protobuf/timestamp.proto";  
  7. import "other_package/other_file.proto";  
  8.   
  9. // 定义一个枚举类型  
  10. enum State {  
  11.  UNKNOWN = 0; // 枚举值必须从 0 开始  
  12.  STARTED = 1;  
  13.  RUNNING = 2;  
  14.  STOPPED = 3;  
  15. }  
  16.   
  17. // 定义一个消息类型  
  18. message Person {  
  19.  // 定义一个字符串字段  
  20.  string name = 1; // 字段编号必须是唯一的正整数  
  21.   
  22.  // 定义一个整型字段  
  23.  int32 id = 2; // 这里的 2 是字段编号  
  24.   
  25.  // 定义一个布尔字段  
  26.  bool has_pony = 3;  
  27.   
  28.  // 定义一个浮点字段  
  29.  float salary = 4;  
  30.   
  31.  // 定义一个枚举字段  
  32.  State state = 5;  
  33.   
  34.  // 定义一个重复字段(类似于列表)  
  35.  repeated string emails = 6;  
  36.   
  37.  // 定义一个嵌套消息  
  38.  message Address {  
  39.    string line1 = 1;  
  40.    string line2 = 2;  
  41.    string city = 3;  
  42.    string country = 4;  
  43.    string postal_code = 5;  
  44.  }  
  45.   
  46.  // 定义一个嵌套消息字段  
  47.  Address address = 7;  
  48.   
  49.  // 定义一个 map 字段(类似于字典)  
  50.  map<string, string> phone_numbers = 8;  
  51.   
  52.  // 定义一个任意类型字段  
  53.  google.protobuf.Any any_field = 9;  
  54.   
  55.  // 定义一个时间戳字段  
  56.  google.protobuf.Timestamp last_updated = 10;  
  57.   
  58.  // 定义一个从其他文件导入的消息类型字段  
  59.  other_package.OtherMessage other_field = 11;  
  60.   
  61.  // 定义一个 oneof 字段,可以设置其中一个字段  
  62.  oneof test_oneof {  
  63.    string name = 12;  
  64.    int32 id = 13;  
  65.    bool is_test = 14;  
  66.  }  
  67. }  
  68.   
  69. // 定义一个服务  
  70. service ExampleService {  
  71.  // 定义一个 RPC 方法,请求类型为 GetPersonRequest 响应类型为 Person  
  72.  rpc GetPerson(GetPersonRequest) returns (Person);  
  73. }  
  74.   
  75. // 定义 GetPerson RPC 方法的请求消息类型  
  76. message GetPersonRequest {  
  77.  int32 person_id = 1;  
  78. }
复制代码
特殊注意

  1. message Foo {
  2.   reserved 2, 15, 9 to 11, 40 to max;
  3.   // 9 to 11 表示区间 [9,11], 40 to max 表示区间 [40, 编号的最大值]
  4.   reserved "foo", "bar";
  5. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4