一. goctl功能简介
goctl是一个go-zero的工具集,运行goctl --help查看功能简介
NAME:
goctl - a cli tool to generate code
USAGE:
goctl [global options] command [command options] [arguments...]
VERSION:
1.3.3 darwin/arm64
COMMANDS:
bug report a bug
upgrade upgrade goctl to latest version
env check or edit goctl environment
migrate migrate from tal-tech to zeromicro # 1.2及之前的的仓库为tal-tech,新仓库为zeromicro
api generate api related files
docker generate Dockerfile
kube generate kubernetes files
rpc generate rpc code
model generate model code
template template operation
completion generation completion script, it only works for unix-like OS
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--version, -v print the version
其中写代码比较常用的有api, rpc, model。
二. api的用法
- 创建zero-demo目录
- 初始化zero-demo
go mod init zero-demo
- 在zero-demo项目中创建user-api/api/user.api文件
mkdir -pv user-api/api
cd user-api/api
touch user.api
- 用IDE打开zero-demo项目,最好安装下goctl这个插件,vs和goland都有,装了之后写api文件会高亮
- 在user.api中写api,本文写一个简单的,详细的例子请参考https://go-zero.dev/cn/api-grammar.html
// api语法版本
syntax = "v1"
info(
author: "songmeizi"
date: "2022-04-01"
desc: "api语法示例及语法说明"
)
type (
UserInfoReq {
UserId int64 `json:"userId"`
}
UserInfoResp {
UserId int64 `json:"userId"`
NickName string `json:"nickname"`
}
)
//定义了一个服务叫user-api
service user-api{
//获取接口的名字叫获取用户信息
@doc "获取用户信息"
//对应的hanlder即controller是userInfo
@handler userInfo
//请求方法是post,路径是/user/info,参数是UserInfoReq,返回值是UserInfoResp
post /user/info (UserInfoReq) returns (UserInfoResp)
}
- 执行下面命令来生产api业务代码
cd user-api/api
## 指定哪个api 生成到哪个路径 指定风格比如gozero(默认), go_zero, goZero等
goctl api go -api *.api -dir ../ --style=goZero
Done.
- 执行完成后会生成对应的代码,如下图。
- 执行go mod tidy下载所需要的依赖
- 然后你只需要在logic/userInfoLogic.go文件里编写业务逻辑即可,如下图。