IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 【go-zero】goctl最新版1.3.4 脚本总结: protobuf脚手架 | orm脚手架 | rpc脚手架 | api脚手架 5分钟打造go微服务 -> 正文阅读

[网络协议]【go-zero】goctl最新版1.3.4 脚本总结: protobuf脚手架 | orm脚手架 | rpc脚手架 | api脚手架 5分钟打造go微服务

笔者当前版本:
go version go1.18.1 darwin/arm64
goctl version 1.3.4 darwin/arm64

通过这4份脚手架,我们将一个完整的微服务通过数据库表,可以在5分钟创建出来所有基本可用的所有方法
在go-zero官方解释:分页属于客户的业务,所以在go-zero设计之初就没有考虑将分页的orm加入到系统中,后续会和大家分享go-zero使用分页的设计

一、升级goctl 降级goctl

goctl是go-zero微服务框架下的代码生成工具
使用 goctl 可显著提升开发效率,让开发人员将时间重点放在业务开发上
其功能有:

  • api服务生成
  • rpc服务生成
  • model代码生成
  • 模板管理

1、查看当前 goctl 版本号

版本号说明

  • version:goctl 版本号
  • os:当前操作系统名称
  • arch: 当前系统架构名称
goctl -v                                                                                                                                                              
goctl version 1.3.4 darwin/arm64

2、通过查看帮助 升级goctl

goctl -h

在这里插入图片描述
升级 goctl

goctl upgrade

3、 降级 goctl 到指定的版本(如:v1.3.2)

go install github.com/zeromicro/go-zero/tools/goctl@v1.3.2

二、一键生成 protobuf

这里需要参考开软软件 sql2pb
sql2pb - github :https://github.com/Mikaelemmmm/sql2pb

# 查看需要的参数
sql2pb -h

参数如下:
在这里插入图片描述

1、操作指令:

sql2pb -go_package ./pb -host 数据库链接地址 -package pb -password 数据库密码 -port 3306 -schema 数据库名 -service_name 生成的rpc名称(如:workorderrpc,这是在proto中service的命名) -user 账户 -table 表名(可以用逗号隔离,如:table1,table2) > ./workorderrpc.proto (生成的proto的文件名)

三、一键生成 model (orm脚手架)

摘自官方:
goctl model 为go-zero下的工具模块中的组件之一,目前支持识别mysql ddl进行model层代码生成,通过命令行或者idea插件(即将支持)可以有选择地生成带redis cache或者不带redis cache的代码逻辑。

生成的目录结构

  model
  ├── usermodel.go
  ├── usermodel_gen.go
  └── vars.go

1、操作指令(通过datasource生成)

goctl model mysql datasource -url="账户:密码@tcp(数据库连接地址:3306)/数据库名" -table="表名" -dir=./internal/model  --style=goZero

2、重要提示(数据库设计问题)

建议:我们在数据库设计时,将所有字段都设置为不能为空
在这里插入图片描述
为什么要这么设计呢?为了更好的和go-zero的orm框架融合
在这里插入图片描述
如上图所示
我们如果设计数据库的表字段不为空时,会生成 sql.NullInt64 类似这种的类型,这种类型会影响我们在rpc与api调用之间的便利性

四、一键生成 Rpc

1、操作指令

强调2点:

  • –style=goZero :可以将我们生成的文件名驼峰
  • sed -i:消除生成的文件中 json含有omitempty类型
goctl rpc protoc workorderrpc.proto(proto文件名) --go_out=. --go-grpc_out=. --zrpc_out=. --style=goZero

sed -i "" 's/,omitempty//g' pb/workorderrpc.pb.go
sed -i "" 's/,omitempty//g' pb/workorderrpc_grpc.pb.go

2、生成目录如下:

.
├── etc
│   └── greet.yaml
├── go.mod
├── go.sum
├── greet
│   ├── greet.go
│   ├── greet.pb.go
│   └── greet_grpc.pb.go
├── greet.go
├── greet.proto
└── internal
    ├── config
    │   └── config.go
    ├── logic
    │   └── pinglogic.go
    ├── server
    │   └── greetserver.go
    └── svc
        └── servicecontext.go

五、一键生成 Api

1、操作指令

goctl api go -api workorderapi.api(api文件名) -dir .  --style=goZero

在这里插入图片描述

六、问题处理

这里会持续更新,欢迎小伙伴来补充!!

1、undefined: grpc.WithBalancerName

问题:google.golang.org/grpc v1.46.0 版本过高 goctl跟不上
解决方式:降级为1.45.0及以下
在这里插入图片描述

2、protoc-gen-go: unable to determine Go import path for “x”

问题描述如下:

protoc-gen-go: unable to determine Go import path for "xxx.proto"

Please specify either:
        ? a "go_package" option in the .proto source file, or
        ? a "M" argument on the command line.

See https://developers.google.com/protocol-buffers/docs/reference/go-generated#package for more information.

--go_out: protoc-gen-go: Plugin failed with status code 1.

报错截图如下:
在这里插入图片描述
问题:protobuf中缺少 option 参数
解决:需要在protobuf中加入 option的参数,尽量保持package与opention命名一致
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-01 16:06:29  更:2022-05-01 16:07:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:38:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码