如果我改变了,
syntax = "proto3";
package a.v0;
message HtmlStore{
string html = 1;
}
到
syntax = "proto3";
package a;
message HtmlStore{
string html = 1;
}
我有一个返回protobuf的python API。现有客户正在使用API。我想改变某些元素的protobuf定义,我想知道它是否会破坏现有的客户端?
答案 0 :(得分:5)
注意:如果您使用 JSON 编码:所有投注均已关闭。
如果您使用二进制编码,package
通常不是 部分的有线格式 - ,除非您已经使用了google.protobuf.Any
功能。
假设您没有使用Any
:根据发送的内容更改package
将完全不可见,并且不会有任何人受到影响。
然而!如果他们收到.proto的更新版本并运行代码生成作为其构建的一部分,那么他们以前工作的代码可能会停止编译 - 要求他们从引用这些类型的代码中删除.v0
。 / p>
在线上发送的唯一内容是字段编号(在html
的情况下为1),线型(在html
的情况下以长度为前缀 - 所以:线型2)和实际值。您还可以安全地重命名HtmlStore
和html
(在相同条件下重新Any
等)。