您的位置:首页 > 健康 > 养生 > go-kratos 学习笔记(3) google buf 管理proto

go-kratos 学习笔记(3) google buf 管理proto

2024/12/23 9:27:23 来源:https://blog.csdn.net/xgs736214763/article/details/140607439  浏览:    关键词:go-kratos 学习笔记(3) google buf 管理proto

google buf 管理proto,以及从新归档文件的目录结构

什么是 BSR?

BSR 将 Protobuf 文件作为版本化模块进行存储和管理,以便个人和组织可以轻松使用和发布他们的 API。

BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及支持远程代码生成的可扩展插件系统。

BSR 目标

  1. 集中式注册表- BSR 是跟踪和改进 Protobuf API 的真实来源。集中式注册表可让您保持兼容性和管理依赖项,同时让您的客户端能够可靠高效地使用 API。拥有集中式、支持 Protobuf 的注册表还有额外的好处,可以防止构建失败。

  2. 依赖管理- BSR终于将依赖管理引入了 Protobuf 生态系统。您现在可以在项目中声明、解析和使用托管的 BSR 模块作为依赖项。

简而言之,您不再需要复制.proto文件依赖项。CLIbuf直接与 BSR 交互以获取您的依赖项(类似于npmNode.js、pipPython、cargoRust 和 Go 中的 Go 模块)。

  1. UI 和文档- BSR 通过可浏览的 UI 为您的 Protobuf 文件提供完整的文档,其中包含语法突出显示、定义和参考。

  2. 远程插件- Buf 团队管理可在 buf.gen.yaml文件中引用的托管 Protobuf 插件。代码生成在 BSR 上远程进行,生成的源代码将写入磁盘。

  3. 生成的 SDK - BSR 通过您可以获取的托管软件存储库公开生成的工件,就像使用您已知的工具获取的任何其他库一样:go get、、或。npm installmvngradle

上面是buf官网的简介,官网地址  https://buf.build/docs/introduction

安装的方法参考官网的安装

首先在项目的根目录下执行

buf mod init

根目录下会对出一个 buf.yaml

version: v2
modules:- path: api- path: third_party
lint:use:- DEFAULT
breaking:use:- FILE

在新创建一个文件  buf.gen.yaml

touch  buf.gen.yaml#写入如下内容version: v2
plugins:- local: protoc-gen-goout: genopt:- paths=source_relative- local: protoc-gen-go-grpcout: genopt:- paths=source_relative- local: protoc-gen-go-httpout: genopt:- paths=source_relative- local: protoc-gen-go-errorsout: genopt:- paths=source_relative- local: protoc-gen-validateout: genopt:- paths=source_relative- lang=go

执行 buf generate 会在gen目录下生成代码

把根据kratos-layout模版生成的目录进行删除 删除如下目录

#创建一个app目录
mkdir appcd app#从新生成一个新的项目模版 --nomod 不生成其他的文件只生成 cmd configs innnternalkratos new users --nomod#需要把原来的helloword的模版生成的  xgs_kratos/api/go/helloworld/v1 替换成新的 xgs_kratos/gen/go/helloworld/v1 新生成的代码都在gen目录下面#在 app/users下直接执行 kratos run

最终项目的目录如下,如果是多个服务可以在app下继续生成

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com