笔记6 [实战项目] Go 语言笔记服务(4): 使用kitex自动生成代码 | 青训营笔记

675 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记。

尝试复现easy_note的代码中用kitex生成代码的过程,弄清楚哪些是自动生成的,哪些是自己写的。

step 1: 创建文件夹

mkdir easy_note

step 2: 初始化

go mod init github.com/cloudwego/kitex-examples/bizdemo/easy_note

step 3: idl文件

复制idl文件夹(其下包含两个idl文件,note.thrift 和 user.proto)

step 4: kitex生成

kitex -module github.com/cloudwego/kitex-examples/bizdemo/easy_note -service demouser -type protobuf user.proto

注意:

  • -service 对应生成的build.sh中的RUN_NAME

image.png

  • 在idl文件中的namespace名(也许都是全小写)对应kitex_gen下的一级目录名

image.png

  • 在idl文件中的service名的全小写对应kitex_gen下的二级目录名

image.png

  • 生成的目录结构

image.png

step 5: 移动kitex生成的文件到相应位置

生成的kitex_gen都会在idl目录下,当我们有多个idl文件时,idl下的一级文件(build.sh,handler.go,main.go,script/bootstrap.sh等)会冲突,

因此我们在项目根目录下新建文件夹kitex_gen文件夹,把userdemo和notedemo文件夹复制过去,

image.png

在根目录新建文件夹cmd/user 和 cmd/note,把对应kitex_gen的build.sh,handler.go,main.go,script/bootstrap.sh等文件复制过去

image.png

step 6: 对note服务重复上述过程

demonote,重复上述过程

kitex -module github.com/cloudwego/kitex-examples/bizdemo/easy_note -service demonote note.thrift

step 7: 解决一下依赖问题

go mod tidy

红色error: 路径中的“idl”删除

image.png

image.png

step 8: 检查一下是否和easy_note一致

经过diff检查,自动生成的文件时一样的(除了版本号不同)

diff kitex_gen/ ../kitex-examples/bizdemo/easy_note/kitex_gen/

diff kitex_gen/userdemo/ ../kitex-examples/bizdemo/easy_note/kitex_gen/userdemo/

diff kitex_gen/userdemo/userservice/ ../kitex-examples/bizdemo/easy_note/kitex_gen/userdemo/userservice/

diff kitex_gen/notedemo/ ../kitex-examples/bizdemo/easy_note/kitex_gen/notedemo/

diff kitex_gen/notedemo/noteservice/ ../kitex-examples/bizdemo/easy_note/kitex_gen/notedemo/noteservice/

diff kitex_gen/notedemo/ ../kitex-examples/bizdemo/easy_note/kitex_gen/notedemo/