学习笔记:带你十天轻松搞定 Go 微服务系列(四)产品服务
学习课程 博客:带你十天轻松搞定 Go 微服务系列(四) 官方文档 go-zero.dev/cn/
一、主要流程:
进入工作区 cd mall/service/product
生成代码
- 根据msyql ddl 生成 product model 模型
goctl api go -api ./api/product.api -dir ./api
- 根据.api 文件 生成 product api 服务
goctl api go -api ./api/product.api -dir ./api
- 根据proto 文件 生成 product rpc 服务
goctl rpc proto -src ./rpc/product.proto -dir ./rpc
编写 product rpc 服务
- 修改 product.yaml 配置文件
- 添加 product model 依赖
- API-CURD 添加产品创建逻辑 Create、详情逻辑 Detai、更新逻辑 Update、删除逻辑 Remove
编写 product api 服务
- 修改 product.yaml 配置文件
- 添加 product rpc 依赖
- RPC-CURD 添加产品创建逻辑 Create、详情逻辑 Detai、更新逻辑 Update、删除逻辑 Remove
启动服务 GO run
二、遇到的问题
bug1 (在宿主机执行造成的)
deprecated: use “goctl rpc protoc” instead, for the details see “goctl rpc protoc –help”
goctl: generation error: exec: “protoc”: executable file not found in $PATH
goctl version: 1.3.2 linux/amd64
解决方法 一宿主机
执行 goctl rpc protoc –help
可以产看命令帮助
需要安装protoc & protoc-gen-go go-zero.dev/protoc-install.html
手动安装 蛮麻烦的 (版本、依赖、墙、环境变量)折腾了好几个钟,建议 暂时放弃!
解决方法 二容器
建议还是直接进 golang 容器执行命令 毕竟项目是运行在容器的,如果你宿主机安装的版本不一致 可能会造成问题
docker ps | grep golang #查找golang 容器信息
docker exec -it container-id /bin/bash #进入容器 默认进入到/usr/src/code 可用dir查看目录
cd mall/service/procduct
goctl rpc proto -src ./rpc/product.proto -dir ./rpc #done
bug 2 启动 product api 服务时
product.go: found packages logic (createhandler.go) and handler (routes.go) in /usr/src/code/mall/service/product/api/internal/handler
包名定义错了 import 为 handler 包下 却定义了 pakage logic
本作品采用《CC 协议》,转载必须注明作者和本文链接