【Go-Zero】goctl一键代码生成常用实战命令
大家好 我是寸铁👊
总结了一篇【Go-Zero】goctl一键生成常用命令的文章✨
喜欢的小伙伴可以点点关注 💝
前言
本文主要是针对最常用的
api
、model
、rpc
代码生成进行描述
其他的代码生成命令可以根据自己的需求在官方文档进行查看
goctl介绍
背景:goctl 的最早功能是为了解决 GRPC 内网调试问题,大约是在 2019 年,在我们的生产环境中,rpc 是内网隔离的,不可通过外网访问,为了快速去 mock 一些线上 RPC client 的请求,就简单的实现了第一版本的代码生成,主要目的是去访问 RPC Server 做一些调试。
goctl
是 go-zero
的内置脚手架,是提升开发效率的一大利器,可以一键生成代码、文档、部署 k8s
yaml
、dockerfile
等。
goctl作用
- 降低沟通成本
沟通,是团队协作进行信息交换的一种形式,沟通的方式有很多种,会议沟通、文档沟通、聊天交流,相信不管是哪种方式,沟通都是团队中最难的一个环节,会议沟通需要占用大量时间,动则半小时起步,文档沟通同样,也会占据大量时间去构思和编写大篇幅的文档,最后可能还没表达出预期目标,线上聊天,需要双方都在线上才能进行信息交换,当然我们这里沟通交换的信息更多是指开发中的一些内容,如接口信息、部署信息等。
- 降低团队耦合
有了沟通,那么团队之间的协作的耦合是避免不了的,例如:在前后端开发中,最大的耦合是接口的耦合,前端完成了规定 UI 绘制后,需要等待后端的接口部署到对应环境才能实现功能的调试,在此期间,前端的团队资源就会大大浪费,由此还会导致项目的延期等问题。
- 提高开发效率
除了沟通成本和团队耦合以外,每个团队在进行项目开发时也有很多时间是在做重复的工作,例如:我们在开发一个新的功能时,需要去定义接口,编写接口文档,编码准备工作,业务开发,model
文件,编写 Dockerfile
文件,编写 k8s yaml
文件,在这些上面我们可以在每个环节上都有提升的空间,让用户将真正的时间集中在业务开发上。
- 降低错误率
在之前的开发实践中,经常会出现grpc server
实现不完全的问题,grpc server
实现类经常会出现编译不过的情况;除此之外,数据库查询层代码开发,sql
语句的编写多参,少参,参数错位,在编译过程中很难发现,一般可能到 QA 环节才能发现,更甚者会导致线上问题。
命令介绍
goctl这么强大的代码生成工具,下面笔者带你使用起来!
api
根据 api
文件生成Go HTTP
代码。
一键生成
goctl api go -api xx.api -dir.
注意:这里的
xx
替换为你自己编写的api
文件的名字
参数说明
再来看一下使用这个命令的参数说明
Flags:
--api string The api file
--branch string The branch of the remote repo, it does work with --remote
--dir string The target dir
-h, --help help for go
--home string The goctl home path of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
--remote string The remote git repo of the template, --home and --remote cannot be set at the same time, if they are, --remote has higher priority
The git repo directory must be consistent with the https://github.com/zeromicro/go-zero-template directory struc