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文件里编写业务逻辑即可,如下图。



