go-zero(二)代码生成工具 goctl 的使用

go-zero代码生成工具goctl的使用

go-zero生成API代码命令

1
2
3
4
5
6
7
8
9
10
mkdir gozero_demo && cd gozero_demo

mkdir -p user-api/api

cd user-api/api

// 创建user.api定义文件

touch user.api

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
syntax = "v1"

info(
author: "hqd8080"
date: "2022-09-27"
desc: "api 语法示例及语法说明"
)

type (
UserInfoReq {
UserId int64 `json:"userId"`
}
UserInfoResp {
UserId int64 `json:"userId"`
Nickname string `json:"nickname"`
}
)

service user-api{
@doc "获取用户信息"
@handler userInfo
post /user/info (UserInfoReq) returns (UserInfoResp)
}
1
2
// 在当前目录下执行
goctl api go -api *.api -dir ../ --style=gozero

go-zero生成RPC代码命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
在项目根路径创建user-rpc目录,在目录里面创建pb文件夹,在pb文件夹里面创建user.proto文件
syntax = "proto3";

option go_package = "./pb";

package pb;

message GetUserInfoReq {
int64 id = 1;
}

message GetUserInfoResp {
int64 id = 1;
string nickname = 2;
}

service usercenter {
rpc GetUserInfo(GetUserInfoReq) returns (GetUserInfoResp);
}

1
2
在当前目录执行
goctl rpc protoc *.proto --go_out=../ --go-grpc_out=../ --zrpc_out=../ --style=goZero

go-zero生成model文件命令

1
2
3
goctl model mysql datasource -url="${username}:${passwd}@tcp(${host}:${port})/${dbname}" -table="${tables}"  -dir="${modeldir}" -cache=true --style=goZero

goctl model mysql datasource -url=root:12345678@tcp(127.0.0.1:3306)/zerodemo -table=user -dir=./model -cache=true --style=goZero

go-zero生成dockerfile文件

1
goctl docker -go user.go

go-zero生成k8s部署文件

1
goctl kube deploy -name user-api -namespace go-zero -image user-api:v1.0 -o user-api.yaml -port 1001 -nodePort 31001