作者:何博弘朗 | 来源:互联网 | 2023-01-06 11:38
如果我改变
syntax = "proto3";
package a.v0;
message HtmlStore{
string html = 1;
}
至
syntax = "proto3";
package a;
message HtmlStore{
string html = 1;
}
我有一个返回protobuf的python API。现有客户端正在使用该API。我想更改某些元素的protobuf定义,并且想知道它是否会破坏现有客户?
1> Marc Gravell..:
注意:如果您使用的是JSON编码,则所有选择均不适用。
如果您使用的是二进制编码,package
则通常不会是有线格式的一部分- 除非您已使用此google.protobuf.Any
功能。
因此,假设您还没有使用过Any
:package
就发送的内容而言,更改将会完全不可见,并且不会影响任何人。
然而!如果他们收到.proto的更新版本并在其生成过程中运行代码生成,则其先前工作的代码可能会停止编译-要求他们.v0
从引用这些类型的代码中删除。
电线上发送的唯一内容是字段号(在情况下为1 html
),电线类型(在html
- 情况下为长度前缀:电线类型2)和实际值。您还可以安全地重命名HtmlStore
和html
(在相同条件下重命名Any
)。