goctl api是goctl中的核心模块之一,其可以通过.api文件一键快速生成一个api服务,如果仅仅是启动一个go-zeroapi演示项目, 你甚至都不用编码,就可以完成一个api服务开发及正常运行。在传统的api项目中,我们要创建各级目录,编写结构体, 定义路由,添加logic文件,这一系列操作,如果按照一条协议的业务需求计算,整个编码下来大概需要5~6分钟才能真正进入业务逻辑的编写, 这还不考虑编写过程中可能产生的各种错误,而随着服务的增多,随着协议的增多,这部分准备工作的时间将成正比上升, 而goctl api则可以完全替代你去做这一部分工作,不管你的协议要定多少个,最终来说,只需要花费10秒不到即可完成。

Tip 其中的结构体编写,路由定义用api进行替代,因此总的来说,省去的是你创建文件夹、添加各种文件及资源依赖的过程的时间。

api命令说明

  1. goctl api -h
  1. PS D:\Projects\Github\NoobWu\go-zero-demo\book\service\user\model> goctl api -h
  2. NAME:
  3. goctl.exe api - generate api related files
  4. USAGE:
  5. goctl.exe api command [command options] [arguments...]
  6. COMMANDS:
  7. new fast create api service
  8. format format api files
  9. validate validate api file
  10. doc generate doc files
  11. go generate go files for provided api in yaml file
  12. java generate java files for provided api in api file
  13. ts generate ts files for provided api in api file
  14. dart generate dart files for provided api in api file
  15. kt generate kotlin code for provided api file
  16. plugin custom file generator
  17. OPTIONS:
  18. -o value the output api file
  19. --help, -h show help
  1. #rem 生成test模块的api
  2. goctl.exe api new test -o . --style gozero

image.png
从上文中可以看到,根据功能的不同,api包含了很多的自命令和flag,我们这里重点说明一下 go子命令,其功能是生成golang api服务,我们通过goctl api go -h看一下使用帮助:

  1. $ goctl api go -h
  1. PS D:\Projects\Github\NoobWu\go-zero-demo\book\service\user\cmd\api>goctl api go -h
  2. NAME:
  3. goctl.exe api go - generate go files for provided api in yaml file
  4. USAGE:
  5. goctl.exe api go [command options] [arguments...]
  6. OPTIONS:
  7. --dir value the target dir
  8. --api value the api file
  9. --style value the file naming format, see [https://github.com/tal-tech/go-zero/tree/master/tools/goctl/config/readme.md]
  • dir 代码输出目录
  • api 指定api源文件
  • style 指定生成代码文件的文件名称风格,详情见文件名称命名style说明

使用示例

  1. $ goctl api go --api test.api --dir . --style gozero
  1. PS D:\Projects\Github\NoobWu\go-zero-demo\book\service\test> goctl api go --api test.api --dir . --style gozero

image.png

猜你想看

原文链接

https://go-zero.dev/cn/goctl-api.html