不喜欢广告? 无广告 今天

Protocol Buffers (Protobuf) 格式化程序

数据开发人员
广告 · 消除?

或者
广告 · 消除?

指导

Protocol Buffers (Protobuf) Formatter

Protocol Buffers (Protobuf) 格式化程序

Protocol Buffers — Google 的语言中立、平台中立的序列化格式 — 为从 gRPC 微服务到移动应用 API 的一切提供支持。但 .proto 文件会很快变得混乱,尤其是在多个开发人员修改同一模式定义时。不一致的缩进、未对齐的字段编号和潦草的格式化使代码审查变得痛苦,并且 diff 难以阅读。

此格式化工具会在客户端解析您的 .proto 文件,并使用符合 Google Protobuf 样式约定的干净、一致的格式重新输出。没有数据会离开您的浏览器。

如何使用

将您的 .proto 文件内容粘贴到输入字段或直接上传 .proto 文件。选择您喜欢的缩进(2 或 4 个空格),选择您的 Protobuf 语法版本,并可选择按标签号启用字段排序。格式化后的输出会即时显示,并带有语法高亮,可供复制或下载。

广告 · 消除?

特征

  • Proto2 和 Proto3 支持 – 支持两种语法版本,并采用与版本相适应的格式化规则
  • 可配置缩进 – 在 2 个空格或 4 个空格缩进之间进行选择,以匹配您团队的风格
  • 字段排序 – 可选地按标签号重新排序消息字段,以获得更干净的模式
  • 语法验证 – 检测常见的错误,如不匹配的大括号、无效的字段编号和缺失的语法声明,并提供行级错误报告
  • Syntax Highlighting – 关键字、类型、字符串、注释和字段编号的彩色编码输出
  • 客户端处理 – 您的模式定义永远不会离开您的浏览器
  • 下载输出 – 将格式化后的结果导出为 .proto 文件

何时使用此工具

在将 .proto 文件提交到版本控制之前、在代码审查期间用于规范样式差异,或在加入具有不一致 Protobuf 定义的新代码库时使用此格式化工具。它也便于清理来自模式迁移工具的自动生成的 .proto 文件。

常问问题

  1. proto2 和 proto3 语法之间有什么区别?

    Proto3 通过删除必需和可选字段标签(默认情况下所有字段都可选)、删除默认值声明以及放弃扩展(而使用 Any 类型)来简化 Protobuf 语言。Proto3 还增加了对 JSON 映射和 map 作为一等公民特性的支持。除非需要 proto2 特有的功能(如必需字段或自定义默认值),否则大多数新项目都应使用 proto3。

  2. 为什么 Protobuf 字段编号很重要?

    Protocol Buffers 中的字段编号用于二进制线格式中以标识字段。一旦 .proto 文件投入使用,字段编号永远不应更改或重用 — 这样做会破坏与现有序列化数据的向后兼容性。编号 1-15 在编码中占用一个字节,因此常用字段应为了效率而分配较小的编号。范围 19000-19999 由 Protobuf 实现保留。

  3. 使用 Protocol Buffers 相对于 JSON 有哪些优势?

    Protocol Buffers 生成的有效载荷明显更小(比 JSON 小 3-10 倍),并且序列化和反序列化速度更快,因为它们使用二进制格式而不是文本。它们还强制执行严格的模式,从而在编译时而不是运行时捕获数据类型错误。但是,JSON 在人类可读的 API、基于浏览器的应用程序以及模式灵活性比性能更重要的场合仍然更胜一筹。

  4. gRPC 如何使用 Protocol Buffers?

    gRPC 使用 Protocol Buffers 作为其接口定义语言 (IDL) 和其底层消息序列化格式。您在 .proto 文件中定义服务方法和消息类型,然后使用 protoc 编译器为您目标语言生成客户端和服务器代码。gRPC 支持四种通信模式:一元(单个请求-响应)、服务器流、客户端流和双向流。

  5. Protobuf 模式中的向后兼容性是什么?

    向后兼容性意味着使用新版本 .proto 模式的代码仍然可以读取使用旧版本序列化的数据,反之亦然。要保持这一点,您应从不更改现有字段编号,从不重用已删除的字段编号(而应使用 reserved 关键字),并且仅添加新的可选字段。在 proto2 中删除必需字段或更改字段类型会破坏兼容性,并可能导致数据损坏或解析失败。

想要享受无广告的体验吗? 立即无广告

安装我们的扩展

将 IO 工具添加到您最喜欢的浏览器,以便即时访问和更快地搜索

添加 Chrome 扩展程序 添加 边缘延伸 添加 Firefox 扩展 添加 Opera 扩展

记分板已到达!

记分板 是一种有趣的跟踪您游戏的方式,所有数据都存储在您的浏览器中。更多功能即将推出!

广告 · 消除?
广告 · 消除?
广告 · 消除?

新闻角 包含技术亮点

参与其中

帮助我们继续提供有价值的免费工具

给我买杯咖啡
广告 · 消除?