安装
正常在系统中下载好 go 的环境之后,我们还需要配置环境;
打开需要添加修改的文件:
sudo vim ~/.profile
在文件的最后面添加:
#添加Gopath路径
export GOROOT="/usr/local/go" //go的安装目录
export GOPATH="/data/go" //自己选择的工作区
export PATH=$GOPATH/bin:$GOROOT/bin:$PATH
之后在命令行输入:
source ~/.profile
让修改立即生效。
这样就完成了 go 的基本环境配置。
下载 kitex 之前,还需要将代理修改,否则将下载失败。
打开命令行:
go env -w GOPROXY=https://goproxy.cn,direct
输入这个之后,在输入命令:go env 来查看配置:
当看到 GOPATH 和 GOROOT 是你选择的路径,GOPROXY 是上图的样子,就代表准备工作做好了。
接下来在命令行中输入来安装 kitex :
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
像这样表示下载成功。
然后下载 thriftgo:
go install github.com/cloudwego/thriftgo@latest
然后使用命令来查看下载的版本:
kitex --version
thriftgo --version
使用
ok,那么接下来就试试看 kitex。
在 GOPATH 根目录下创建一个文件夹:test_k。
比如我的项目路径为:~/文档/go_work/golearn/test_k
然后使用命令:go mod init text_k 在项目文件夹中创建一个 go.mod 文件。
然后我们新建一个文件:kt.thrift,输入下列代码:
namespace go api
struct Request {
1: string message1
2: string message2
}
struct Response {
1: string message
}
service KStudy {
Response Concat(1: Request req)
}
表示定义了一个 kt 服务,包含了一个 Concat 接口,意思是将 Request 中的 message1 和 message2 两个字符串拼接起来,然后通过 Response 返回。
我们就可以使用 kitex 的代码生成功能来生成代码。
在项目目录下输入:
kitex -moudle test_k -service kstudy kstudy.thrift
test_k 为你的项目名称。
在代码创建完成后为如下格式:
此时我们需要使用 go mod tidy 命令来获取依赖包:
现在可以在 handler.go 中来实现 Concat 的具体逻辑了:
// Concat implements the KStudyImpl interface.
func (s *KStudyImpl) Concat(ctx context.Context, req *api.Request) (resp *api.Response, err error) {
// TODO: Your code here...
resp = api.NewResponse()
resp.Message = req.GetMessage1() + req.GetMessage2()
return
}
接下来就是实现客户端的相关逻辑。
在项目目录下新建 client 文件夹。新增 main.go 作为客户端的启动入口。
代码为:
package main
import (
"context"
"log"
"github.com/ag9920/kstudy/kitex_gen/api"
"github.com/ag9920/kstudy/kitex_gen/api/kstudy"
"github.com/cloudwego/kitex/client"
)
func main() {
client, err := kstudy.NewClient("kstudy", client.WithHostPorts("0.0.0.0:8888"))
if err != nil {
log.Fatal(err)
}
req := &api.Request{
Message1: "message1",
Message2: "message2",
}
resp, err := client.Concat(context.Background(), req)
if err != nil {
log.Fatal(err)
}
log.Println(resp)
}
最后在项目目录下,输入 go run . 运行 server,端口号默认为 8888:
在 client 目录下运行 main.go :
这样就代表成功了。
参考自: