看来所有文档中很少有专门介绍 gRPC 版本控制最佳实践的内容。总的来说,我的理解是,事情应该保持简单,例如不删除字段或其顺序,并继续评估消息中包含的字段集是什么。
我计划简单地为我的消息定义一个标准,其中包括按顺序排列的第一个版本字段,例如:
message userCreateRequest {
  string version = 1
  string name = 2;
  string lastName = 3;
}
通过以上内容,客户端可以处理版本字段以检索正确的“版本控制意图”。默认情况下,它可以是“v1.0”,服务将验证如何处理期望。
v1.0 请求示例:
 userCreateRequest {
   version: "v1.0",
   name = "jim",
   lastName = "smith"
 }
v2.0 请求示例:
 userCreateRequest {
   version: "v2.0",
   name = "jim",
   lastName = "smith"
 }
问题:这是否违反任何指导或最佳实践?
主版本号应该是 proto 包的一部分,例如your.package.v2. 这是Google API 设计指南(针对也提供 REST 的 gRPC 服务)的建议。由于版本是包名称的一部分,因此每个主要版本都被视为单独的服务。
如果主版本号是,那么虽然包名称中包含版本号1可能不是必需的,但减少混乱仍然是一个好主意。
| 归档时间: | 
 | 
| 查看次数: | 4304 次 | 
| 最近记录: |