参考:
GitHub - dyntrait/goctl-swagger: 通过 api 文件生成 swagger 文档
GitHub - Bluettipower/goctl-swagger
CLI 工具 - goctl api - 《go-zero v1.5 教程》 - 书栈网 · BookStack
go-zero学习 第二章 进阶之API_go-zero syntax是用来干什么的-CSDN博客
一:编译
执行go install 前一般需要设置环境,不然资源经常会下载不下载
go env -w GOPROXY=https://goproxy.cn,direct
执行完 go install,一般生成的exe会在gopath下面,通过
go env
可以知道go相关的执行环境,包括gopath
或是参考其他编译命令
GOPROXY=https://goproxy.cn/,direct
go install github.com/zeromicro/goctl-swagger@latest
编译好的资源:
https://download.csdn.net/download/hongkid/88955799
二:执行生成命令
1.生成swagger文件
goctl api plugin -plugin goctl-swagger="swagger -filename api.json" -api xxx.api -dir .
2.生成ts文件
goctl api ts -api ./xxx.api -dir ts输出目录 -webapi ../utils/ajax/index
其中-webapi是个自定义的对象,定义后在生成的ts接口文件里面会包含
import webapi from "../utils/ajax/index"
这样的代码
三:其他补充
goctl在其高版本(1.5,1.6)中在生成ts代码存在不少问题:
1.命令行丢失了-webapi参数
2.一些像middleware : 这样的写法也兼容性不好,报错,需要把空格去掉改成middleware:才行
3.像service xx-go这样有-符号的也报错不给过
4.import在下面这个场景有问题,例如:根目录下面的a.api里面import了B目录下面的b.api,b.api文件里面又import了B目录下面的c.api,则编译会出错
5.无法支持map[string]*Xxx 的数据结构,不过这个也可以理解,会提示暂不支持map类型,但不影响生成json,只是这个define的数据类型找不到
经过多个版本测试,目前比较结果就是全部基于1.4.2版本编译出来的最为靠谱,可以下载上面的资源
自己编译也可以下载上面git的goctl-swagger,然后修改mod里面gozero相关编译版本,删除sum文件,执行
go mod tidy
重新生成sum文件,再进行编译