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

news2024/11/15 8:48:05

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-go
    out: gen
    opt:
      - paths=source_relative
  - local: protoc-gen-go-grpc
    out: gen
    opt:
      - paths=source_relative
  - local: protoc-gen-go-http
    out: gen
    opt:
      - paths=source_relative
  - local: protoc-gen-go-errors
    out: gen
    opt:
      - paths=source_relative
  - local: protoc-gen-validate
    out: gen
    opt:
      - paths=source_relative
      - lang=go

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

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

#创建一个app目录
mkdir app

cd app

#从新生成一个新的项目模版 --nomod 不生成其他的文件只生成 cmd configs innnternal

 kratos new users --nomod


#需要把原来的helloword的模版生成的  xgs_kratos/api/go/helloworld/v1 替换成新的 xgs_kratos/gen/go/helloworld/v1 新生成的代码都在gen目录下面


#在 app/users下直接执行 
 kratos run
 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1942626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你CrossOver 24.0.0 for Mac 破解版安装激活2024图文教程

兔八哥爱分享要和大家分享的是一款可以让我们直接在Mac上安装和运行Windows软件和游戏的软件——CrossOver。兔八哥爱分享这次带来的是24.0.0 测试版本。 CrossOver已支持相当多的Windows应用,如Office、AutoCAD、Windows Media Player 9、Photoshop、Dreamweaver、…

Java并发的笔记

打算记录自己的学习情况,尽量不摆烂,另外一件事要有始有终,要弄完 如果多个线程处理同一个变量,读跟写都保证不了 2024.7.22》》》》》》》》》》》》 2.1.1volatile的实现原理 volatile不会引起线程上下文的切换和调度 一致性更…

《0基础》学习Python——第十八讲__爬虫/<1>

一、什么是爬虫 爬虫是一种网络数据抓取的技术。通过编写程序(通常使用Python),爬虫可以自动化地访问网页,解析网页内容并提取出所需的数据。爬虫可以用于各种用途,如搜索引擎的索引,数据分析和挖掘&#x…

【中项】系统集成项目管理工程师-第4章 信息系统架构-4.7安全架构

前言:系统集成项目管理工程师专业,现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试,全称为“全国计算机与软件专业技术资格(水平)考试”&…

软件测试---测试需求分析

课程目标 什么是软件测试需求 软件测试需求的必要性 如何对软件测试需求进行分析(重点) 课程补充 灰度测试(基于功能):先发布部分功能,然后看用户的反馈,再去发布另外一部分的功能更新。 A/B测…

Qt绘制指南针(仪表盘绘制封装使用)

指南针是一种用来确定方向的工具。它由一个磁针制成,其一端被磁化,可以自由旋转。当放置在水平面上时,磁针会指向地球的磁北极。通过观察磁针的指向,我们可以确定地理北方的方向。本示例是在Qt中绘制一个指南针,通过继…

基于springboot+vue+uniapp的宿舍管理系统小程序

开发语言:Java框架:springbootuniappJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包&#…

C++学习笔记02-结构基础(问题-解答自查版)

前言 以下问题以Q&A形式记录,基本上都是笔者在初学一轮后,掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系,也适合做查漏补缺和复盘。 本文对读者可以用作自查,答案在后面&#xff0…

Git的使用教程

仓库分区 Git本地有三个工作区域:工作目录(Working Directory),暂存区(Stage/Index),资源库(Repository或Git Directory)。如果再加上远程的git仓库(Remove Directory)就…

SAP PP 物料主数据字段状态控制

参考 https://zhuanlan.zhihu.com/p/452823415 物料主数据里面的状态 由 1、行业 2、工厂 3、物料类型 4、事务代码 5、采购相关字段 6、客制 优先级 隐藏->显示->必输->可选

Go基础编程 - 11 - 函数(func)

接口(interface) 函数1. 函数定义1.1. 函数名1.2. 参数列表1.3. 返回值列表 2. 匿名函数3. 闭包、递归3.1 闭包3.1.1 函数、引用环境3.1.2 闭包的延迟绑定3.1.3 goroutine 的延迟绑定 3.2 递归函数 4. 延迟调用(defer)4.1 defer特…

C语言中的控制语句(三):while 和 do while 语句

文章目录 [toc] 🍊自我介绍🍊while语句🍊do...while循环🍊🍊 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello…

单调栈(随缘复习到了,顺手刷了)

也是不知道为什么突然又复习到单调栈了,所以顺手刷了三道题,总结一下 P6503 [COCI2010-2011#3] DIFERENCIJA 思路:这题是要求每个子区间里面的最大值和最小值的差,我们一开始想的必然是纯暴力呀,但是一看这数据&#…

主流硬派SUV齐聚尼三锅,方程豹豹5成功冲顶

随着汽车的飞速普及,越来越多的车主都喜欢上了越野。 而在浩瀚无垠的沙漠腹地,尼三锅以其独特的地理形态,成为了无数越野爱好者心中的圣地与试炼场。 近日,众多汽车博主携自己的爱车普拉多、方程豹豹5、牧马人、坦克400、坦克700、…

图书馆座位管理系统 /图书馆座位预约系统/图书馆管理系统的设计与实现

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代&a…

excel批量新建多个同类型的表格

背景引入 比如,一个企业有多个部门,现在需要按照某一个excel表模板收集各个部门的信息,需要创建数十个同类型表格,且标题要包含部门名称。 1.修改模板表格标题 在一个文件夹下面放入需要发放给各个部门的表格,将标题…

轨迹优化 | 基于ESDF的共轭梯度优化算法(附ROS C++/Python仿真)

目录 0 专栏介绍1 数值优化:共轭梯度法2 基于共轭梯度法的轨迹优化2.1 障碍约束函数2.2 曲率约束函数2.3 平滑约束函数 3 算法仿真3.1 ROS C实现3.2 Python实现 0 专栏介绍 🔥课程设计、毕业设计、创新竞赛、学术研究必备!本专栏涉及更高阶的…

Chapter17 表面着色器——Shader入门精要学习

Chapter17 表面着色器 一、编译指令1.表面函数2.光照函数3.其他可选参数 二、两个结构体1.Input 结构体:数据来源2.SurfaceOutput 三、Unity背后做了什么四、表面着色器的缺点 一、编译指令 作用:指明该表面着色器的 表面函数 和 光照函数,并…

LeetCode 58.最后一个单词的长度 C++

LeetCode 58.最后一个单词的长度 C 思路🤔: 先解决当最后字符为空格的情况,如果最后字符为空格下标就往后移动,直到不为空格才停止,然后用rfind查询空格找到的就是最后一个单词的起始位置,最后相减就是单词…

前台文本直接取数据库值doFieldSQL插入SQL

实现功能:根据选择的车间主任带出角色。 实现步骤:OA的“字段联动”功能下拉选项带不出表“hrmrolemembers”,所以采用此方法。 doFieldSQL("select roleid from HrmResource as a inner join hrmrolemembers as b on a.id b.resource…