kratos utils
安装所有 kraots 工具集
通过
kratos
安装
执行命令:kratos tool install all
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ kratos tool install all
go get -u github.com/go-kratos/kratos/tool/kratos@v0.5.0
...
kratos: 安装成功!
...
protoc: 安装成功!
...
genbts: 安装成功!
...
genmc: 安装成功!
...
genproject: 安装成功!
...
testgen: 安装成功!
...
testcli: 安装成功!
...
wire: 安装成功!
...
swagger: 安装成功!
kraots 使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
NAME:
kratos - kratos工具集
USAGE:
kratos [global options] command [command options] [arguments...]
VERSION:
v0.5.0
COMMANDS:
new, n 创建新项目
build, b kratos build
run, r kratos run
tool, t kratos tool
version, v kratos version
self-upgrade kratos self-upgrade
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help (default: false)
--version, -v print the version (default: false)
- kratos new
创建项目
kratos new kratos_7
- kratos build and run
kratos build 和 kratos run 是 go build 和 go run 的封装,可以在当前项目任意目录进行快速运行进行调试,并无特别用途。
- kratos tool
kratos tool 是基于 proto 生成 http&grpc 代码,生成缓存回源代码,生成 memcache 执行代码,生成 swagger 文档等工具集,先看下的执行效果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ kratos tool
protoc(已安装): 快速方便生成pb.go的protoc封装,windows、Linux请先安装protoc工具 Author(kratos) [2020/03/31]
genbts(已安装): 缓存回源逻辑代码生成器 Author(kratos) [2020/03/31]
genmc(已安装): mc缓存代码生成 Author(kratos) [2020/03/31]
testgen(已安装): 测试代码生成 Author(kratos) [2020/03/31]
testcli(已安装): 测试代码运行 Author(kratos) [2020/03/31]
swagger(已安装): swagger api文档 Author(goswagger.io) [2020/03/31]
安装工具: kratos tool install demo
执行工具: kratos tool demo
安装全部工具: kratos tool install all
全部升级: kratos tool upgrade all
详细文档: https://github.com/go-kratos/kratos/blob/master/doc/wiki-cn/kratos-tool.md
- kratos version
1
2
3
4
5
$ kratos version
Version: v0.5.0
Go version: go1.14.2
Built: 2020/4/30
OS/Arch: darwin/amd64
- kratos self-upgrade
升级
kraots
工具
protoc 使用
- 安装:
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
- 使用
kratos tool protoc api.proto
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 结果一
~/gomod/demo/kratos_7 ⌚ 11:18:52
$ cd api
~/gomod/demo/kratos_7/api ⌚ 11:38:06
$ kratos tool protoc api.proto
2020/07/06 11:38:08 protoc --proto_path=/Users/hys/go/src
...
2020/07/06 11:38:11 generate api.proto success.
# 结果二
$ kratos tool protoc api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --bm_out=:. api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --gofast_out=plugins=grpc:. api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --bswagger_out=:. api.proto
2020/07/06 11:39:06 protoc --proto_path=/Users/hys/go/src --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --proto_path=/Users/hys/gomod/demo/kratos_7/api --ecode_out=:. api.proto
2020/07/06 11:39:06 generate api.proto success.
swagger
api 文档
kratos tool protoc api.proto
kratos tool swagger serve -p 5566 api.swagger.json
grpc ui
- 生成文档
–proto_path=? 的路径需要写 kratos 下的
third_party
protoc --proto_path=. --proto_path=.. --proto_path=/Users/hys/go/pkg/mod/github.com/go-kratos/kratos@v0.5.1-0.20200526160825-521d240568d0/third_party --descriptor_set_out=api.protoset --include_imports api.proto
- 启动
1
2
$ grpcui -bind 0.0.0.0 -port 8506 -plaintext -protoset api.protoset 127.0.0.1:9888
gRPC Web UI available at http://0.0.0.0:8506/
- 测试 log
1
INFO 07/06-11:51:10.319 grpc-access-log user=no_user ip=127.0.0.1:64781 path=/demo.service.v1.Demo/Ping ts=0.000155499 ret=0 traceid= timeout_quota=0.999989715 args
ecode
- 生成命令
kratos tool protoc --ecode ecode.proto
- 服务注册 ecode
1
2
3
4
5
6
7
8
9
10
main.go
func main(){
flag.Parse()
log.Init(&log.Config{Stdout: true}) // 初始化kratos打印输出为true
defer log.Close()
log.Info("im_session start")
ecode.Register(ec.CMS) // 注册ecode
paladin.Init()
.....
}
-在返回 return 时
时间 proto 接口的内返回
ecode.Error(ecode.New(400), "test error")
This post is licensed under
CC BY 4.0
by the author.