概述
go-zero 包含极简的 API 定义和生成工具 goctl,可以根据定义的 api 文件一键生成 Go, iOS, Android, Kotlin, Dart, TypeScript, JavaScript 代码,并可直接运行。
使用 go-zero 的好处:
- 轻松获得支撑千万日活服务的稳定性
- 内建级联超时控制、限流、自适应熔断、自适应降载等微服务治理能力,无需配置和额外代码
- 微服务治理中间件可无缝集成到其它现有框架使用
- 极简的 API 描述,一键生成各端代码
- 自动校验客户端请求参数合法性
- 大量微服务治理和并发工具包
快速上手
1 | # 安装 goct 软件 |
DSL 语言
在 Go Zero 框架中,DSL(Domain-Specific Language)通常用于定义 API 接口、数据库模型等。Go Zero 提供了 api
、model
等工具,可以通过简洁的 DSL 来生成对应的代码。
1. API DSL
在 Go Zero 中,API 的 DSL 文件通常以 .api
结尾,定义了 HTTP 路由、请求和响应结构。下面是一个简单的 API DSL 示例:
1 | info( |
解释:
info
: 定义了 API 的元信息,比如标题、描述、作者、版本等。type
: 定义了请求和响应的结构体。service
: 定义了服务,user-api
是服务名。@handler GetUser
: 指定了处理这个请求的处理函数。get /user/:userId
: 定义了一个 GET 请求,路径参数为userId
,请求体使用UserRequest
,响应体使用UserResponse
。
2. Model DSL
Go Zero 的 model
工具用于生成数据库模型。可以通过定义 DSL 文件,自动生成 CRUD 操作的代码。
1 | type ( |
解释:
type
: 定义了数据库表结构,这里的User
对应数据库中的user
表。method
: 定义了自动生成的数据库操作方法,比如FindOne
、Insert
、Update
和Delete
。
3. 如何生成代码
在定义好 .api
文件或模型的 DSL 文件后,可以使用 Go Zero 提供的工具生成对应的代码。
生成 API 代码:
1
goctl api go -api user.api -dir .
生成 Model 代码:
1
goctl model mysql ddl -src user.sql -dir .
通过这些 DSL,Go Zero 可以帮助开发者快速生成标准化的代码,减少手动编写的工作量。
使用gRpc方式来制作
1 | # 单个 rpc 服务生成示例指令 |
model 导出数据
1 | goctl model pg datasource --url "postgres://postgres:123456@127.0.0.1:5432/postgres?sslmode=disable" -table="tb_kline_config,tb_kline_data,tb_kline_rpc,tb_token_quote" |
引用
- [1] github-go-zero
- [2] go-zero