cwgo在项目中的应用|青训营笔记

514 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

cwgo的介绍

在项目中我们可以使用代码生成工具来减少我们的工作量。cwgo是CloudWeGo All in one代码生成工具,整合了各个组件的优势,提高开发者提体验。

步骤

go的安装

由于kitex相关的代码生成工具不可以在windows中使用,因此我无法使用之前在笔记本中安装好的go的环境,在服务器中安装go。可以直接使用apt进行安装,也可以手动下载安装

设置相关的path

  1. 在/etc/profile中设置GOPATH变量,这个变量的值不是GOROOT(go的安装目录),而是go项目的目录
  2. 在/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文件

  1. thrift的安装 GO111MODULE=on go install github.com/cloudwego/thriftgo@latest

  2. 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

结果如下图所示

uTools_1674884572760.png