SuperAPI AI 工具集

protobuf

编程与开发

查看项目

更新于 10-15 16:31

技能介绍

用途

该技能面向使用 Protocol Buffers 的开发场景,当需要创建或编辑 .proto 文件、设置 buf.yaml 或 buf.gen.yaml、设计 gRPC 或 Connect 服务、添加 protovalidate 约束,或排查 buf lint 与破坏性变更错误时使用。

主要能力

技能覆盖 proto 设计、buf CLI、gRPC/Connect 服务以及 protovalidate 校验。它提供快速参考文档,涵盖字段类型、枚举、oneof、map、模式演进与破坏性变更、校验约束、完整服务示例、buf 工具链配置、从 protoc 迁移以及常见问题排查。同时提供代码生成模板(Go with gRPC、Go with Connect、TypeScript with Connect、Python with gRPC、Java with gRPC)和 proto 文件模板(实体消息、BookRef oneof、枚举,以及包含批量操作、分页、排序的完整 CRUD 服务)。

使用方式

核心工作流分为三步。第一步是匹配项目风格:在编写 proto 代码前,先查看项目中已有的 .proto 文件,匹配命名、字段顺序、结构模式、校验和文档风格;如果不存在,则询问用户应使用何种风格或模仿某个现有库。第二步是编写 proto 代码:应用 best_practices.md 中的通用最佳实践,并为每个字段添加 protovalidate 约束(对生产 API 而言这不是可选项),服务模板可参考 assets/ 目录。第三步是验证变更:始终运行 buf format -w && buf lint,并先检查是否存在 Makefile(许多项目使用 make lint 或 make format),在认为变更完成前修复所有错误。

项目初始化方面,新项目需创建目录结构 proto/ 下包含 buf.yaml、buf.gen.yaml 以及 company/domain/v1/service.proto,以 assets/buf.yaml 为起点,在 buf.yaml 中添加 buf.build/bufbuild/protovalidate 依赖并运行 buf dep update,代码生成配置使用 assets/buf.gen.*.yaml。

常见任务包括:新增字段时使用下一个连续字段号、添加 protovalidate 约束、编写字段文档并运行格式化与 lint;删除字段时需同时保留字段号和名称(reserved 4; reserved "old_field_name";),并运行 buf breaking --against '.git#branch=main' 验证;添加 protovalidate 约束时,常用约束包括字符串格式(.string.uuid、.string.email、.string.uri、.string.pattern)、字符串长度(.string.min_len、.string.max_len)、数值范围(.int32.gte、.uint32.lte)、枚举校验(.enum.defined_only、.enum.not_in = 0)、重复字段数量(.repeated.min_items、.repeated.max_items)、必填字段((buf.validate.field).required = true)以及 oneof 必填((buf.validate.oneof).required = true)。

适用场景

适用于需要设计或维护 Protocol Buffer 模式、配置 buf 工具链、构建 gRPC/Connect 服务、为生产 API 添加字段级校验,以及排查 buf lint 或破坏性变更问题的开发工作。

限制

资料未提供该技能的具体收费、价格、平台支持范围或效果保证等信息。