这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
cwgo的介绍
在项目中我们可以使用代码生成工具来减少我们的工作量。cwgo是CloudWeGo All in one代码生成工具,整合了各个组件的优势,提高开发者提体验。
步骤
go的安装
由于kitex相关的代码生成工具不可以在windows中使用,因此我无法使用之前在笔记本中安装好的go的环境,在服务器中安装go。可以直接使用apt进行安装,也可以手动下载安装
设置相关的path
- 在/etc/profile中设置GOPATH变量,这个变量的值不是GOROOT(go的安装目录),而是go项目的目录
- 在/etc/profile中向PATH变量添加$GOPATH/bin,这时因为go install 安装的包的编译结果在bin中
安装相关工具
cwgo
// cwgo
go install github.com/cloudwego/cwgo@latest
其他的包
go install github.com/cloudwego/hertz/cmd/hz@latest
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
go install github.com/cloudwego/thriftgo@latest
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
go install github.com/cloudwego/cwgo@latest
go install gorm.io/gen/tools/gentool@latest
idl工具
IDL是Interface description language的缩写,指接口描述语言,是CORBA规范的一部分,是跨平台开发的基础。
在本次代码生成的过程中,需要先编写idl文件
-
thrift的安装
GO111MODULE=on go install github.com/cloudwego/thriftgo@latest -
proto的安装 sudo apt
install protobuf-compiler
使用
进入到GOPATH目录下
首先进入gopath目录下,创建一个目录:src/local/cwgo_test
创建idl文件,新建thrift文件
在上述目录中再建一个idl文件夹,来存放idl文件,新建一个thrift文件
// idl/hello.thrift
namespace go hello.example
struct HelloReq {
1: string Name (api.query="name"); // 添加 api 注解为方便进行参数绑定
}
struct HelloResp {
1: string RespBody;
}
service HelloService {
HelloResp HelloMethod(1: HelloReq request) (api.get="/hello");
}
生成项目
静态命令行: cwgo server --type HTTP --idl ./idl/hello.thrift --service hello
结果如下图所示