这是我的个人学习记录,它未必正确,如有错误请在评论区指出!
在这里我将创建一个Kratos项目,并且使它变得看起来相对干净,方便我后续的代码编写。
参考内容:
《kratos Docs》创建项目: https://go-kratos.dev/docs/getting-started/start
工具版本:
- go version go1.17.1 windows/amd64
- kratos version v2.1.1
安装 kratos 命令工具
go install github.com/go-kratos/kratos/cmd/kratos/v2
安装 Protobuf 编译工具
进入 https://github.com/protocolbuffers/protobuf/releases
- 下载电脑对应操作系统的 protobuf 编译工具
windows x64选择:
windows x64 选择的 protobuf 编译工具
- 解压编译工具到指定目录
创建目录: C:\Program Files\protoc-3.19.0 (如果你可以的话,这里可以修改为你喜欢的目录哦)
将下载到的”protoc-3.19.0-win64.zip”文件解压到目录”C:\Program Files\protoc-3.19.0”下
解压后的目录结构
- 配置环境变量
配置Protobuf环境变量
注意: 环境变量指向的目录需要到 “/bin” 层才完整哦
创建项目
# kratos 生成的模板项目GitHub为: https://github.com/go-kratos/kratos-layout
# 生成一个名为"user"的项目
kratos new user
# 进入生成的项目目录
cd user
# 拉取项目依赖
go mod download
删除目录:
/api/helloworld
删除文件:
/internal/biz/greeter.go
/internal/data/greeter.go
/internal/service/greeter.go
修改文件:
/internal/biz/biz.go
var ProviderSet = wire.NewSet(NewGreeterUsecase)
// 修改为
var ProviderSet = wire.NewSet()
/internal/data/data.go
var ProviderSet = wire.NewSet(NewData, NewGreeterRepo)
// 修改为
var ProviderSet = wire.NewSet(NewData)
/internal/service/service.go
var ProviderSet = wire.NewSet(NewGreeterService)
// 修改为
var ProviderSet = wire.NewSet()
/internal/server/grpc.go
import (
v1 "user/api/helloworld/v1" // 删除此行
......
)
func NewGRPCServer(c *conf.Server, greeter *service.GreeterService, logger log.Logger) *grpc.Server {
// ↓ 删除 "greeter *service.GreeterService"
func NewGRPCServer(c *conf.Server, logger log.Logger) *grpc.Server {
......
v1.RegisterGreeterServer(srv, greeter) // 删除此行
}
/internal/server/http.go
import (
v1 "user/api/helloworld/v1" // 删除此行
......
)
func NewHTTPServer(c *conf.Server, greeter *service.GreeterService, logger log.Logger) *http.Server {
// ↓ 删除 "greeter *service.GreeterService"
func NewHTTPServer(c *conf.Server, logger log.Logger) *http.Server {
......
v1.RegisterGreeterHTTPServer(srv, greeter) // 删除此行
}
完成后我们就得到了一个干净的项目