Kratos 基础学习记录

一、安装golang环境

golang的安装和系统变量配置的教程有很多,简单列举几个教程:

windows:

超详细Go语言环境安装(有图详解)_go环境安装-CSDN博客

linux:

【Linux — 安装 Go】Linux 系统安装 Go 过程总结_linux 安装go-CSDN博客

mac:

mac安装Golang开发环境及快速入门_mac 安装go-CSDN博客

因为本人是windows环境下开发,所以只实验了windows版本

二、安装protoc 和 protoc-gen-go

安装protoc 和 proto-gen-go 最好还是通过git安装,或者通过github寻找windows压缩包

windows安装protoc、protoc-gen-go、protoc-gen-go-grpc_protoc下载安装windows-CSDN博客

三、本地构建项目

//建议开启GO111MODULE

go env -w GO111MODULE=on

# 使用默认模板创建项目(helloworld就是你要创建的项目名称)
kratos new helloworld

# 如在国内环境拉取失败, 可 -r 指定源
kratos new helloworld -r https://gitee.com/go-kratos/kratos-layout.git

# 进入项目目录
cd helloworld

# 拉取项目依赖
go mod download

# 生成所有proto源码、wire等等
go generate ./...

# 运行项目
kratos run

按照上面的命令就能在你配置的项目地址中,构建并运行项目。

注意:构建项目的时候,应该把项目构建到系统变量 %GOPATH%/src 中。如你的 GOPATH配置路径是E:golangWorke 则你的项目构建地址应该是 E:golangWorke/src 中。

四、Api和Grpc接口生成

(1)新项目构建

为了对照,我们最好新建个项目进行开发,这里就省略项目构建流程(假意构建了demo项目)

(2)删除部分文件

为了项目目录足够干净和便于学习,我们应将项目中自带的proto等文件删除。

  1. 删掉 helloworld/v1 文件夹

  2. 删掉internal/biz/greeter.go,internal/data/greeter.go,internal/service/greeter.go三个文件

(3)生成proto文件

//通过kratos 命令生成proto文件

//生成命令

kratos proto add  api/student/v1/student.proto

(4)修改部分代码

//生成student.proto 文件后,可以和helloword项目中的greeter.proto进行对比

// 大家可以按照自己需求进行接口修改和添加,下面是示例:

syntax = "proto3";

package api.student.v1;

// 想生成http可以访问的接口文件,需要先引入 google/api/annotations.proto
import "google/api/annotations.proto";//引入后即可生成http访问的接口文件

option go_package = "demo/api/student/v1;v1";
option java_multiple_files = true;
option java_package = "api.student.v1";


service Student {
    // 在 service Student{} 增加如下代码:
    rpc GetStudent (GetStudentRequest) returns (GetStudentReply) { //get方式获取参数接口
            option (google.api.http) = {
                get: "/student/{id}",
            };
    }

    //注册post请求

    rpc CreateStudent(CreateStudentRequest)returns(CreateStudentReply){

                option(goole.api.http) = {

                        post:"/createStudent",

                        body:"*"   //设置post方式时,我们需要映射body来获取参数

                }

        }

}

message GetStudentRequest { //设置请求参数
    int32 id = 1;
}

message GetStudentReply { //设置返回参数
    string name   = 1;
    int32  status = 2;
    int32  id     = 3;
}

//post请求参数设置

message CreateStudentRequest{

        string name = 1;
        string username = 2;
        string password = 3;
        string phone = 4;
        int32 role_id = 5;

}

//post返回参数设置

message CreateStudentReply{ 
    string name   = 1;
    int32  status = 2;
    int32  id     = 3;
}

(5)生成接口和service文件

//设置完proto中的接口和参数后,我们可以通过kratos命令生成相应的接口和service文件

# 生成 client 源码
kratos proto client api/helloworld/v1/greeter.proto
# 生成 server 源码  //-t表示源码生成路径
kratos proto server api/helloworld/v1/greeter.proto  -t  internal/service

(6)修改相应代码

//生成api和service文件后,我们需要删除之前未删除干净的代码

1.删除 internal/biz/biz.go 文件中的NewGreeterUsecase。//后续需要写上自己添加的

2.删除 internal/data/data.go 文件中的NewGreeterRepo。//同样后续需要写上自己添加的

(7)执行wire

//生成api和service文件后,

# 导入到项目中
go get -u github.com/google/wire

# 安装命令
go install github.com/google/wire/cmd/wire

//安装完wire后,我们生成新的wire_gen.go文件,需要进入到项目根目录下,cmd/demo/目录中,因为我创建的项目名称是demo,所以cmd下会生成demo文件目录。

//进入目录中后,我们直接通过wire命令生成新的wire_gen.go 文件

wire

 生成对应的wire_gen.go文件后,我们回到项目根目录,通过kratos命令启动服务。

kratos run 

五、接口增加gorm 和 相应的增、删、改、查逻辑。

推荐九卷的博文 https://www.cnblogs.com/jiujuan/p/16322725.html

借鉴文章地址:https://www.cnblogs.com/jiujuan/p/16322725.html

相关推荐

  1. Kratos 基础学习记录

    2024-04-08 04:42:04       18 阅读
  2. GO 语言基础学习记录

    2024-04-08 04:42:04       21 阅读
  3. C++基础入门学习记录

    2024-04-08 04:42:04       5 阅读
  4. GO 语言基础学习记录(二)

    2024-04-08 04:42:04       21 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-08 04:42:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-08 04:42:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-08 04:42:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-08 04:42:04       18 阅读

热门阅读

  1. hibernate检索方式

    2024-04-08 04:42:04       15 阅读
  2. 常见的几种字符串及其区别

    2024-04-08 04:42:04       16 阅读
  3. Linux介绍

    2024-04-08 04:42:04       14 阅读
  4. 记录CodeMirror一些常用的配置选项

    2024-04-08 04:42:04       18 阅读
  5. AI创业机会的探索

    2024-04-08 04:42:04       16 阅读
  6. MySQL-对象

    2024-04-08 04:42:04       13 阅读
  7. C++20 semaphore(信号量) 详解

    2024-04-08 04:42:04       13 阅读
  8. P1162 填涂颜色

    2024-04-08 04:42:04       18 阅读
  9. make命令简介

    2024-04-08 04:42:04       15 阅读
  10. 大学课堂点名程序

    2024-04-08 04:42:04       13 阅读
  11. Docker 入门

    2024-04-08 04:42:04       14 阅读