这是我参与「第三届青训营 -后端场」笔记创作活动的的第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
- 在idl文件中的namespace名(也许都是全小写)对应kitex_gen下的一级目录名
- 在idl文件中的service名的全小写对应kitex_gen下的二级目录名
- 生成的目录结构
step 5: 移动kitex生成的文件到相应位置
生成的kitex_gen都会在idl目录下,当我们有多个idl文件时,idl下的一级文件(build.sh,handler.go,main.go,script/bootstrap.sh等)会冲突,
因此我们在项目根目录下新建文件夹kitex_gen文件夹,把userdemo和notedemo文件夹复制过去,
在根目录新建文件夹cmd/user 和 cmd/note,把对应kitex_gen的build.sh,handler.go,main.go,script/bootstrap.sh等文件复制过去
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”删除
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/