go微服务开发:go-zero入门教程(二)
以下内容,参考了go-zero官方文档,是对官方文档的进阶指南章节的梳理汇总。
go-zero的进阶指南,请参考 https://go-zero.dev/cn/docs/advance/business-dev
通过本文,你将学习到如下知识点:
1.如何使用go-zero定义api文件
2.如何为定义的api文件生成api服务
3.如何编写模块业务逻辑
4.go-zero开发注意实现,参见这里 https://www.cnblogs.com/jamstack/p/17223639.html
在开始之前,假设你已经对go-zero有了基本的了解,并且了解go-zero编写api文件的语法。如果还不了解,建议先阅读这里 https://go-zero.dev/cn/docs/design/grammar/
开发环境:
Windows 11
Terminal preview
go 1.19
go-zero的进阶指南的演示工程,共包含2个模块:user和search,本篇讲述的是search模块,user模块请参见:go微服务开发:go-zero入门教程(一)
第一步:定义search模块的api文件
cd service\search\api,新建search.api,内容如下:
type ( SearchReq { // 图书名称 Name string `form:"name"` } SearchReply { Name string `json:"name"` Count int `json:"count"` } ) @server( jwt: Auth ) service search-api { @handler search get /search/do (SearchReq) returns (SearchReply) } service search-api { @handler ping get /search/ping }
第二步:为search.api生成api服务
cd service\search\api,执行如下命令:
goctl api go -api search.api -dir .
第三步:完善config.go配置
cd service\search\api\internal\config\,编辑config.go,内容如下:
package config import "github.com/zeromicro/go-zero/rest" type Config struct { rest.RestConf Auth struct { AccessSecret string AccessExpire int64 } }
第四步:完善search模块search-api.yaml配置
cd service\search\api\etc\,编辑search-api.yaml,内容如下:
Name: search-api Host: 0.0.0.0 Port: 8889 Auth: AccessSecret: abcdefgh AccessExpire: 3600
第五步:启动search模块
cd service\search\api\,执行:
go run search.go -f etc/search-api.yaml
第六步:使用cmd测试search模块
1.检索《西游记》,不传用户token
curl -i -X GET http://127.0.0.1:8889/search/do?name=%E8%A5%BF%E6%B8%B8%E8%AE%B0
2.检索《西游记》,传用户token
curl -i -X GET http://127.0.0.1:8889/search/do?name=%E5%B0%8F%E6%98%8E -H "Authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2Nzg5NjM0MDQsImlhdCI6MTY3ODk1OTgwNCwidXNlcklkIjoxfQ.4qy18I8CmW9sOpRBFr15e70y2WGGA_OGKGBSaRHYGec"