Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

swagger插件使用嵌套api失败,但是goctl api 正常能生成接口 #71

Open
Danny5487401 opened this issue Mar 6, 2023 · 18 comments

Comments

@Danny5487401
Copy link

(⎈ |prod-ctx:ticket-system)➜  api git:(hotfix/dingdijng) ✗ goctl api plugin -plugin goctl-swagger="swagger -filename rome.json" -api rome.api -dir .
goctl-swagger: /Users/python/Desktop/gllue_pkg/rome-be/api/"v1/mine.api" line 1:0 the nested api does not support import

代码:
image

@Danny5487401 Danny5487401 changed the title swagger插件使用嵌套api失败,但是goctl api 正常能生成接口文嘉安 swagger插件使用嵌套api失败,但是goctl api 正常能生成接口 Mar 6, 2023
@MaxToby
Copy link
Collaborator

MaxToby commented Mar 6, 2023

好像是goinstall 没有拉取最新的代码,用以下方式试试?

git clone https://github.com/zeromicro/goctl-swagger
cd goctl-swagger 
go install

@Danny5487401
Copy link
Author

Danny5487401 commented Mar 6, 2023

(⎈ |prod-ctx:ticket-system)➜  api git:(master) goctl api plugin -plugin goctl-swagger="swagger -filename rome.json" -api rome.api -dir .
goctl-swagger: /Users/python/Desktop/gllue_pkg/rome-be/api/"v1/v1.api" line 1:0 the nested api does not support import
(⎈ |prod-ctx:ticket-system)➜  api git:(master) goctl-swagger  --version                                                                 
goctl-swagger version 20220621 darwin/arm64

@MaxToby 刚升级了,还是不行

@MaxToby
Copy link
Collaborator

MaxToby commented Mar 7, 2023

import的api文件里面还有import其他的api,是这样吗?

@Danny5487401
Copy link
Author

import的api文件里面还有import其他的api,是这样吗?

是的,上面有图

@Arrowarcher
Copy link

我也遇到这个问题了,主要原因是各个小模块的.api文件,有公共的结构体,于是想抽出来单独放一个公共的(分开放可以,但是不能重名,要不然gen code的时候会报错结构体多次定义)。希望能支持一下2层嵌套

@Arrowarcher
Copy link

Arrowarcher commented Mar 10, 2023

import的api文件里面还有import其他的api,是这样吗?

是的,上面有图

我测试了,只要你把嵌套的嵌套的api,全放入第一层api文件,即在第一层import那些,就可以正常生成了(第二层文件的import全去掉,有红线提示忽略就好)

@lxkaka
Copy link

lxkaka commented Apr 4, 2023

同样的问题,希望尽快修复

@Danny5487401
Copy link
Author

import的api文件里面还有import其他的api,是这样吗?

是的,上面有图

我测试了,只要你把嵌套的嵌套的api,全放入第一层api文件,即在第一层import那些,就可以正常生成了(第二层文件的import全去掉,有红线提示忽略就好)

就是不想修改原有结构,因为现有目录结构带v1,v2,比较清晰 @Arrowarcher

@jsonMark
Copy link

import的api文件里面还有import其他的api,是这样吗?

是的,上面有图

我测试了,只要你把嵌套的嵌套的api,全放入第一层api文件,即在第一层import那些,就可以正常生成了(第二层文件的import全去掉,有红线提示忽略就好)

就是不想修改原有结构,因为现有目录结构带v1,v2,比较清晰 @Arrowarcher

1层嵌套是支持的,平级引用公共模块在goctl api plugin这里就报错了。

@lovepluskaka
Copy link

The same problem, more than two levels of nesting will cause this. Hope this problem fixed soon.

@Danny5487401
Copy link
Author

@kevwan 哪时候可以解决下

@you-eye
Copy link

you-eye commented Oct 12, 2023

希望能尽快解决

@ParkerFir
Copy link

ParkerFir commented Nov 17, 2023

import的api文件里面还有import其他的api,是这样吗?

是的,上面有图

我测试了,只要你把嵌套的嵌套的api,全放入第一层api文件,即在第一层import那些,就可以正常生成了(第二层文件的import全去掉,有红线提示忽略就好)

我把userInfo摘到第一层api后,虽然可以生成swagger。但是在有红线的提示下,goctl format该文件进行格式排版的时候,会找不到这个结构体而报错。
Error: xxx.api line 14:13 can not find declaration 'UserInfo' in context

@jayvynl
Copy link

jayvynl commented Nov 23, 2023

写给遇到相同问题的朋友,可以通过升级 goctl 解决该问题:

git clone https://github.com/zeromicro/goctl-swagger
cd goctl-swagger 
go get github.com/zeromicro/go-zero/tools/[email protected]
go install

但是有个问题啊,api 文件里不能含有 json/form/path/header 之外的 tag,否则生成的 swagger 文件会有问题。

This was referenced Nov 23, 2023
@jayvynl
Copy link

jayvynl commented Nov 23, 2023

写给遇到相同问题的朋友,可以通过升级 goctl 解决该问题:

git clone https://github.com/zeromicro/goctl-swagger
cd goctl-swagger 
go get github.com/zeromicro/go-zero/tools/[email protected]
go install

但是有个问题啊,api 文件里不能含有 json/form/path/header 之外的 tag,否则生成的 swagger 文件会有问题。

已经完全修复了这个问题 #88 ,在维护者合并之前,可以通过以下方式使用:

git clone https://github.com/jayvynl/goctl-swagger.git
cd goctl-swagger
go install

@jayvynl
Copy link

jayvynl commented Apr 17, 2024

由于 PR 没有被合并, 新开了仓库解决 ISSUES 提到的大部分问题, 并支持 openapi 3 生成, https://github.com/jayvynl/goctl-openapi

@Danny5487401
Copy link
Author

由于 PR 没有被合并, 新开了仓库解决 ISSUES 提到的大部分问题, 并支持 openapi 3 生成, https://github.com/jayvynl/goctl-openapi

@jayvynl 为啥没合并 why unmerged?

@jayvynl
Copy link

jayvynl commented Apr 21, 2024

由于 PR 没有被合并, 新开了仓库解决 ISSUES 提到的大部分问题, 并支持 openapi 3 生成, https://github.com/jayvynl/goctl-openapi

@jayvynl 为啥没合并 why unmerged?

不确定,可能是什么地方不符合维护者的想法,但是也没有 review 。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants