快速开始

cwgo 是 CloudWeGo All in one 代码生成工具,整合了各个组件的优势,以提高开发者的体验。

准备 Golang 开发环境

  1. 如果您之前未搭建 Golang 开发环境, 可以参考 Golang 安装
  2. 推荐使用最新版本的 Golang(支持版本 >= v1.18)。
  3. 确保打开 go mod 支持 (Golang >= 1.15 时,默认开启)。

在完成环境准备后,接下来将帮助你快速上手 cwgo。

安装 cwgo 工具

go install github.com/cloudwego/cwgo@latest

用 go 命令来安装是最简单的,你也可以选择自己从源码构建和安装。要查看 cwgo 的安装位置,可以用:

go list -f {{.Target}} github.com/cloudwego/cwgo

要使用 thrift 或 protobuf 的 IDL 生成代码,需要安装相应的编译器:thriftgoprotoc

thriftgo 安装:

GO111MODULE=on go install github.com/cloudwego/thriftgo@latest

protoc 安装

# brew 安装
brew install protobuf
# 官方镜像安装,以 macos 为例
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.19.4/protoc-3.19.4-osx-x86_64.zip
unzip protoc-3.19.4-osx-x86_64.zip
cp bin/protoc /usr/local/bin/protoc
# 确保 include/google 放入 /usr/local/include下
cp -r include/google /usr/local/include/google

安装成功后,执行 cwgo --versionthriftgo --versionprotoc --version 应该能够看到具体版本号的输出(版本号有差异,以 x.x.x 示例):

cwgo --version
vx.x.x

thriftgo --version
vx.x.x

protoc --version
libprotoc x.x.x

注意事项

cwgo 底层使用 kitexhzgen 工具,所以其相应的工具规范也需要遵守,如 kitex 的注意事项hz 的注意事项

使用

cwgo 的具体使用请参考命令行工具

下面以 thrift 为例:

  1. 首先创建一个目录

    mkdir -p $GOPATH/src/local/cwgo_test
    cd $GOPATH/src/local/cwgo_test
    
  2. 创建一个 idl 目录

    mkdir idl
    
  3. 编写 idl/hello.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");
    }
    
  4. 生成项目 layout

    cwgo server --server_name a.b.c --type HTTP  --idl idl/hello.thrift -module {{your_module_name}}
    
  5. 编译运行

    go mod tidy && go mod verify
    sh build.sh && sh output/bootstrap.sh
    
  6. 发起调用

    curl http://127.0.0.1:8080/ping
    pong
    

恭喜你!至此你成功编写了一个 cwgo 的 HTTP 服务端,并完成了一次调用!