这是我的个人学习记录,它未必正确,如有错误请在评论区指出!

在这里我将创建一个Kratos项目,并且使它变得看起来相对干净,方便我后续的代码编写。

参考内容:

《kratos Docs》创建项目: https://go-kratos.dev/docs/getting-started/start

工具版本:

  • go version go1.17.1 windows/amd64
  • kratos version v2.1.1

安装 kratos 命令工具

  1. go install github.com/go-kratos/kratos/cmd/kratos/v2

安装 Protobuf 编译工具

进入 https://github.com/protocolbuffers/protobuf/releases

  • 下载电脑对应操作系统的 protobuf 编译工具

windows x64选择:

1、Kratos v2 初步学习 1-创建项目 - 图1

windows x64 选择的 protobuf 编译工具

  • 解压编译工具到指定目录

创建目录: C:\Program Files\protoc-3.19.0 (如果你可以的话,这里可以修改为你喜欢的目录哦)

将下载到的”protoc-3.19.0-win64.zip”文件解压到目录”C:\Program Files\protoc-3.19.0”下

1、Kratos v2 初步学习 1-创建项目 - 图2

解压后的目录结构

  • 配置环境变量

1、Kratos v2 初步学习 1-创建项目 - 图3

配置Protobuf环境变量

注意: 环境变量指向的目录需要到 “/bin” 层才完整哦

创建项目

  • 创建项目模板

  1. # kratos 生成的模板项目GitHub为: https://github.com/go-kratos/kratos-layout
  2. # 生成一个名为"user"的项目
  3. kratos new user
  4. # 进入生成的项目目录
  5. cd user
  6. # 拉取项目依赖
  7. go mod download
  • 获得一个干净的项目

删除目录:

  1. /api/helloworld

删除文件:

  1. /internal/biz/greeter.go
  2. /internal/data/greeter.go
  3. /internal/service/greeter.go

修改文件:

  1. /internal/biz/biz.go
  2. var ProviderSet = wire.NewSet(NewGreeterUsecase)
  3. // 修改为
  4. var ProviderSet = wire.NewSet()
  1. /internal/data/data.go
  2. var ProviderSet = wire.NewSet(NewData, NewGreeterRepo)
  3. // 修改为
  4. var ProviderSet = wire.NewSet(NewData)
  1. /internal/service/service.go
  2. var ProviderSet = wire.NewSet(NewGreeterService)
  3. // 修改为
  4. var ProviderSet = wire.NewSet()
  1. /internal/server/grpc.go
  2. import (
  3. v1 "user/api/helloworld/v1" // 删除此行
  4. ......
  5. )
  6. func NewGRPCServer(c *conf.Server, greeter *service.GreeterService, logger log.Logger) *grpc.Server {
  7. // ↓ 删除 "greeter *service.GreeterService"
  8. func NewGRPCServer(c *conf.Server, logger log.Logger) *grpc.Server {
  9. ......
  10. v1.RegisterGreeterServer(srv, greeter) // 删除此行
  11. }
  1. /internal/server/http.go
  2. import (
  3. v1 "user/api/helloworld/v1" // 删除此行
  4. ......
  5. )
  6. func NewHTTPServer(c *conf.Server, greeter *service.GreeterService, logger log.Logger) *http.Server {
  7. // ↓ 删除 "greeter *service.GreeterService"
  8. func NewHTTPServer(c *conf.Server, logger log.Logger) *http.Server {
  9. ......
  10. v1.RegisterGreeterHTTPServer(srv, greeter) // 删除此行
  11. }

完成后我们就得到了一个干净的项目