tonglin0325的个人主页

go学习笔记——Kratos框架

官方文档

1
2
https://go-kratos.dev/en/docs/getting-started/start/

1.安装Go#

参考:mac安装go1.20

2.安装Kratos框架#

kratos依赖protobuf grpc等框架,需要先进行安装

1
2
3
4
5
brew install grpc
brew install protobuf
brew install protoc-gen-go
brew install protoc-gen-go-grpc

验证

1
2
3
4
protoc --version
protoc-gen-go --version
protoc-gen-go-grpc --version

安装kratos框架

1
2
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest

3.创建项目#

1
2
3
4
5
# 创建项目
kratos new helloworld
# 也可以指定仓库
kratos new helloworld -r https://gitee.com/go-kratos/kratos-layout.git

编译项目

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
cd helloworld

# 安装依赖
make init

# 生成wire依赖注入
go generate ./...
# 或者使用make
make generate

# 生成bin执行文件
go build -o ./bin/ ./...
# 或者使用make
make build

# 运行
./bin/helloworld -conf ./configs
或者
kratos run

# 测试
curl 'http://127.0.0.1:8000/helloworld/kratos'
{"message":"Hello kratos"}%

项目结构

Kratos项目如果想要使用debug模式来运行

需要将run kind从File修改成Directory,并指定Directory为main.go和wire_gen.go所在的目录,否则会报

1
2
3
# command-line-arguments
./main.go:77:23: undefined: wireApp

同时还需要额外指定conf文件的路径,否则会报

1
2
panic: stat ../../configs: no such file or directory

配置如下

或者修改成package,指定成package path

debug成功

如果想要添加额外的API,需要先添加proto文件

1
2
kratos proto add api/helloworld/demo.proto

编译proto文件生成model和grpc代码

1
2
kratos proto client api/helloworld/demo/demo.proto

或者使用make命令

1
2
make api

注意make api命令无法生成validate验证代码,需要额外使用make validate命令,但是kratos proto client命令是可以的

参考:https://go-kratos.dev/docs/component/middleware/validate/

生成service模板代码

1
2
kratos proto server api/helloworld/demo/demo.proto -t internal/service

参考文档:从0到1安装启动Kratos框架https://go-kratos.dev/en/docs/getting-started/usage

4.Example项目#

1
2
https://github.com/go-kratos/examples