六.Protobuf3引入其他.proto文件
2024-10-20 01:33:24
Protobuf3 使用其他消息类型
您可以使用其他消息类型作为字段类型。例如,假设您希望在每个SearchResponse消息中包含Result消息,为此,您可以在.proto中定义结果消息类型,然后在SearchResponse中指定Result类型字段:
message SearchResponse {
repeated Result results = 1;
} message Result {
string url = 1;
string title = 2;
repeated string snippets = 3;
}
导入定义
在上面的例子中,Result 消息类型和SearchResponse定义在同一个文件中——如果你想用作字段类型的消息类型已经在另一个.proto 文件中定义了呢?
您可以通过导入其他.proto文件来使用文件中的定义的类型。 您可以在文件的顶部添加一条import语句:
import "myproject/other_protos.proto";
默认情况下,您只能使用直接导入的 .proto文件定义。然而,有时你可能需要移动一个 .proto文件到一个新的位置,但不想为此更新了所有调用它的.proto文件,现在你可以在文件原始位置放置一个仿造的 .proto文件,使用import public将所有导入转发到新位置。任何包含import public语句的proto的人都可以临时依赖import public依赖。例如:
// new.proto
// All definitions are moved here
// old.proto
// This is the proto that all clients are importing.
import public "new.proto";
import "other.proto";
// client.proto
import "old.proto";
// You use definitions from old.proto and new.proto, but not other.proto
协议编译器使用-I/--proto_path标志在协议编译器命令行指定的一组目录中搜索导入的文件。如果没有给出标志,它会在调用编译器的目录中查找。通常,您应该将--proto_path标志设置为项目的根目录,并对所有导入使用完全限定的名称。
使用proto2消息类型
可以导入proto2消息类型并在proto3消息中使用它们,反之亦然。但是,proto2枚举不能直接在proto3语法中使用(如果导入的proto 2消息使用它们也没关系)。
最新文章
- 数据存储_SQLite (2)
- shell中$0,$?,$!等变量意义
- 标题编辑 AndroidTagGroup
- [日常训练]FJ省夏令营day1
- D/A转换器实验
- 收不到Win10正式版预订通知?一个批处理搞定
- 一个现代化的JSON库Moshi针对Android和Java
- Hibernate中的多对多关系详解(3)​
- Android中两种设置全屏或者无标题的方法
- [转]标准C++字符串string以及MFC6.0字符串CString的tokenize和split函数
- redhat 安装virtualbox
- alex python of day1
- sql中的IFNULL函数的应用
- Linux(CentOS 7)环境下安装MySQL
- 查询拼接SQL语句,多条件模糊查询
- 【转载】JAVA基础复习与总结<;三>; Object类的常用方法
- 不能收缩 ID 为 %s 的数据库中 ID 为 %s 的文件,因为它正由其他进程收缩或为空。
- ES6中的proxy
- day10-列表生成式
- springboot学习过程笔记
热门文章
- Apache软件基金会核心项目Tomcat的那些事
- linux命令及相关配置
- 15 Filter过滤器和Listener监听器
- 使用ImagesPipeline时候报错为:ModuleNotFoundError: No module named &#39;scrapy.contrib&#39;
- 精确选择识别png图片有像素的区域
- java 获取手机归属地,引起net.UnknownHostException错误
- C#中Unity对象的注册方式与生命周期解析
- Eclipse开发环境(一):下载和安装
- mysql的安装,启动,和基础配置 -----windows版本
- kubernetes 配置网络插件 flannel