wangdingfu / fu-api-doc-plugin

【Fu Doc】是一个idea插件 可以根据代码一键生成接口文档、一键发起http请求、一键同步接口文档至YApi、ShowDoc、ApiFox等第三方文档系统。你的 ⭐️ ⭐️⭐️Star⭐️⭐️ ⭐️,是我持续维护的动力!如果你觉得还不错,请点上一颗小星星
http://www.fudoc.cn
Apache License 2.0
74 stars 8 forks source link

你好,上传到showdoc的时候,目录有问题 #27

Open Thepatterraining opened 8 months ago

Thepatterraining commented 8 months ago

你好,上传到showdoc的时候,创建一个其他的目录,然后上传。等下次上传的时候,上次创建的目录就没有了,还的在重新创建。

wangdingfu commented 8 months ago

是在idea上上传时新增的目录还是在showdoc中创建的目录啊 这两种场景我刚都没复线出来,能提供具体点的截图吗

Thepatterraining commented 8 months ago

好的,之前没有这个问题,昨天我更新了一下这个插件,就出来这个问题了,我的idea版本

Thepatterraining commented 8 months ago

我的操作步骤是,鼠标在一个function里面右键,选择同步api到showdoc,下面是截图

image

可以看到只有一个根目录 我现在创建一个目录为test

image

接下来选中它并点击确定,上传以后我再次在这个function里面右键点击同步api到showdoc,就显示下图了

image

可以看到我刚才创建的目录没有了。 还有一个问题是当我点击 sync api confirm的时候也是弹窗显示根目录。

image
Thepatterraining commented 8 months ago

还有一个问题是我在这里填写的用户名密码也没有反显了,每次重新进来这里都是空的。

image
Thepatterraining commented 8 months ago

这是我的idea版本

image
Thepatterraining commented 8 months ago

还有一个问题,想问一下上传以后是根据什么来判断是创建一个接口文档还是更新一个接口文档的呢。

wangdingfu commented 8 months ago

我也用的是最新版本的插件去验证了下是没问题的 目前怀疑可能是因为你创建了两个重名的项目导致的 image image

如果按照以上方案发现问题还是存在的话 麻烦在回复下 我用你这个idea的版本来验证试下。因为不同idea版本底层调用的api确实会存在一些差异

wangdingfu commented 8 months ago

还有一个问题,想问一下上传以后是根据什么来判断是创建一个接口文档还是更新一个接口文档的呢。

目前showDoc是根据同一个目录下文件名称来判断的。如果名称相同则会更新这个文件。所以如果你有多个接口名称是一样的 可以吧这些接口分别放在不同的目录 或则为接口起不同的名称来区分 接口名称一般默认取的是Controller接口方法上的注释

wangdingfu commented 8 months ago

是一样的 可

目前因为时间原因 还没有做用户名密码登陆实现的功能 这个用户名和密码是预留的 后期只用输入用户名和密码会直接在idea和showDoc之间做数据项目的同步。目前主要是配置每个项目的apiKey和apiToken来向showDoc项目中推送接口文档这个功能

Thepatterraining commented 8 months ago

还有一个问题,是当我使用了Fu Request的时候,我再次生成该接口的接口文档里面的请求示例和返回示例变成了Fu Request里面的请求参数和返回参数了。这里能改一下吗?我目前一个场景是我使用Fu Request调试的时候接口返回错误了,这个时候如果上传文档,那么文档里面的示例就变成错误示例了。当我从Fu Request里面删除这个接口请求以后,再次同步该接口就报错了。并且Fu Request里面好像没办法查看其他的接口请求,有没有一个接口请求列表呢

Thepatterraining commented 8 months ago

我设置了两个不同的项目名称,但是还是不好使。

image

当我再次点击上传的时候,其实也不能切换项目名称,应该是因为我的作用范围不同。这是我再次创建了一个目录为test2

image

当我上传以后再次点击上传的时候,test2不见了

image

还有我记得之前点击"sync api confirm"是跳转到插件的设置里面,现在是弹出上传窗口。

Thepatterraining commented 8 months ago

当我换了一个电脑使用同样版本的idea安装fudoc以后是好使的了,并且当我第一次点击上传的时候,在根目录下会自动出现一个

xxxx

的目录,xxxx为控制器的注释,并且我点击“sync api confirm”也会跳转到设置界面,所以我怀疑这是一个问题导致的。不过我这两个电脑系统不一样,Mac M1 pro的电脑就出现了这个问题,换了一个win10就是好使的,可是我没更新前,Mac也是好使的。。

Thepatterraining commented 8 months ago

抱歉,我刚才说的有问题,我再次测试了win10的插件,发现点击"sync api confirm"也变成弹出上传窗口了,但是我的目录并没有受影响,我尝试再次创建了同样项目名称的配置,目录也没有收到影响。想问一下目录和配置是存储在哪里呢?我可以在我的Mac上去删掉他们在重装插件来尝试吗?我试过重装插件,但是他会把我原来的配置带出来,我的目录还是有问题。我想尝试彻底清除他然后重装看看会不会好

Thepatterraining commented 8 months ago

我在我的.idea下面找到了该配置文件fuApiSyncConfig.xml。我的配置文件内容如下: <?xml version="1.0" encoding="UTF-8"?>

我想,我的目录问题是因为创建失败了?并没有持久化存储到该配置文件中,所以下次就没有了。但是我不知道为什么没有正确存储到该配置文件中。并且我发现当我上传成功以后,我的Idea左下角没有显示 xxx上传成功的提示,我记得之前是有这个提示的,并且我在我的win10电脑中也有这个提示,不知道跟这个有没有关系

Thepatterraining commented 8 months ago

`<?xml version="1.0" encoding="UTF-8"?>

`
Thepatterraining commented 8 months ago

但是,自动读取的controller的注释是可以持久化成功的,categories里面的目录都是自动读取的controller注释,可我手动创建的就不成功,另外,虽然自动读取的可以成功,但是我发现非常慢,我等了几分钟吧,我才在配置文件里面能看到该目录,可我手动创建的等了20分钟了,也不见它出现。

Thepatterraining commented 8 months ago

还有一个问题,就是能否支持对 JsonProperty 注解的读取呢,我当前的请求对象和返回对象都配置了 JsonProperty注解,比如 `@Getter @Setter public class ExportReq implements Serializable {

@JsonProperty("template_id")
@NotNull(message = "模板id不能为空")
private Integer templateId;

}`

但是生成的接口文档中显示变量名

image

因为实际和前端交互的是JsonPerperty之后的结果

Thepatterraining commented 8 months ago

我目前还有一个问题,就是当我多次上传同一个接口的时候,他会创建一个新的接口文件,而不是更新原来的接口文件。所以好像不是您说的名称相同则会更新这个文件。但是有的时候确实会更新,我不知道为什么。这是我多次测试后的结果

image
Thepatterraining commented 8 months ago

我在win10上面没有复现这个问题,我怀疑跟目录那个问题有关系。请问我可以fork该项目进行debug并提交pull request吗?

wangdingfu commented 8 months ago

还有一个问题,是当我使用了Fu Request的时候,我再次生成该接口的接口文档里面的请求示例和返回示例变成了Fu Request里面的请求参数和返回参数了。这里能改一下吗?我目前一个场景是我使用Fu Request调试的时候接口返回错误了,这个时候如果上传文档,那么文档里面的示例就变成错误示例了。当我从Fu Request里面删除这个接口请求以后,再次同步该接口就报错了。并且Fu Request里面好像没办法查看其他的接口请求,有没有一个接口请求列表呢

首先第一个问题,我最初的设计是希望在Fu Request里完成接口调试,当接口调试成功后在生成接口文档,这个时候生成的接口文档是最符合实际场景要求的,至于接口报错了建议接口调试成功后在尝试同步一次文档。第二个问题是删除这个接口请求,再次同步报错这个问题我待会儿提个issue, 在下一个版本里会修复这个问题。第三个问题Fu Request里没办法查看接口请求,在最初的设计是会吧每个接口和每一次请求记录都会存储下来,实际代码中这块也实现了一部分,但是后来要做的功能实在太多了,优先去实现一些主要的功能了,这块不是非常重要,我就暂时放在一边搁置了。后面重构整个项目时会考虑实现这个功能

wangdingfu commented 8 months ago

我设置了两个不同的项目名称,但是还是不好使。 image 当我再次点击上传的时候,其实也不能切换项目名称,应该是因为我的作用范围不同。这是我再次创建了一个目录为test2 image 当我上传以后再次点击上传的时候,test2不见了 image 还有我记得之前点击"sync api confirm"是跳转到插件的设置里面,现在是弹出上传窗口。 image

应该是个bug导致的,但是我本地可能不太好复现,建议你将上图中fudoc的目录给删掉,并重新安装最新版插件。目前fudoc一些持久化的配置是保存在这个目录下的。 另外sync api confirm这个动作是打开窗口确认将文档同步至哪个具体目录的意思,所以会总是打开窗口,而sync api当一个接口之前没有同步过时,会打开窗口选择一个目录同步,第二次在同步时,不会在弹出窗口选择目录同步,而是会默认将文档同步至上一次同步过的目录中,这是sync api和sync api confirm的区别。带confirm的就是每次要确认将接口同步到哪个目录 不带的会使用历史记忆功能。另外当没有配置时,不管是sync api还是sync api confirm都会跳转到设置页面去添加配置。

wangdingfu commented 8 months ago

当我换了一个电脑使用同样版本的idea安装fudoc以后是好使的了,并且当我第一次点击上传的时候,在根目录下会自动出现一个

xxxx

的目录,xxxx为控制器的注释,并且我点击“sync api confirm”也会跳转到设置界面,所以我怀疑这是一个问题导致的。不过我这两个电脑系统不一样,Mac M1 pro的电脑就出现了这个问题,换了一个win10就是好使的,可是我没更新前,Mac也是好使的。。

建议删除fudoc目录 在上一条消息中有截图回复。然后重装插件,最好是能重启idea。这个问题应该能得到解决。目前我还不能复现这种场景,后面我计划重构这个项目,会用新的存储方案替换掉现在这种存储方案来彻底解决这类问题,目前是使用idea提供的操作方案来持久化数据的,有时候内存不足或者特殊场景下会出现无法持久化的情况,导致一些莫名的bug产生。

wangdingfu commented 8 months ago

插件,但是他会把我原来的配置带出来,我的目录还是有问题。我

image 在这个目录 你可以右键open In ---> Explorer 来打开具体目录,因为不同系统可能目录不一样,无法给出具体的目录地址。 image

wangdingfu commented 8 months ago

但是,自动读取的controller的注释是可以持久化成功的,categories里面的目录都是自动读取的controller注释,可我手动创建的就不成功,另外,虽然自动读取的可以成功,但是我发现非常慢,我等了几分钟吧,我才在配置文件里面能看到该目录,可我手动创建的等了20分钟了,也不见它出现。

正常情况手动创建是实时生效的,创建之后不要x掉窗口,要点击OK来关闭窗口才会将目录持久化下来。如果创建后再进入没有出现建议把fudoc配置目录给干掉或则重启idea基本上都能得到解决。后面会采用新的存储方案来彻底解决掉这类问题

wangdingfu commented 8 months ago

还有一个问题,就是能否支持对 JsonProperty 注解的读取呢,我当前的请求对象和返回对象都配置了 JsonProperty注解,比如 `@Getter @Setter public class ExportReq implements Serializable {

@JsonProperty("template_id")
@NotNull(message = "模板id不能为空")
private Integer templateId;

}`

但是生成的接口文档中显示变量名 image

因为实际和前端交互的是JsonPerperty之后的结果

这个提议非常好,我之前也有考虑过,也是可以实现的。但是我最近比较忙,我会抽时间尽快把你提的这点优化上去,预计过年前会发布新的版本

wangdingfu commented 8 months ago

我目前还有一个问题,就是当我多次上传同一个接口的时候,他会创建一个新的接口文件,而不是更新原来的接口文件。所以好像不是您说的名称相同则会更新这个文件。但是有的时候确实会更新,我不知道为什么。这是我多次测试后的结果 image

这个我明天看下showdoc的开放api,之前验证过很多次是根据 [目录+文件名称] 来确定唯一一个文件的, 我明天验证后再回复你。

wangdingfu commented 8 months ago

目录那个问题有关系。请问我可以fork该项目进行debug

可以的 非常欢迎有兴趣的朋友一起来为这个项目做出贡献。建议你在官方文档里找到联系我 添加fudoc的微信群 进群交流

wangdingfu commented 8 months ago

我目前还有一个问题,就是当我多次上传同一个接口的时候,他会创建一个新的接口文件,而不是更新原来的接口文件。所以好像不是您说的名称相同则会更新这个文件。但是有的时候确实会更新,我不知道为什么。这是我多次测试后的结果 image

你好 我今天验证了下 目前未发现这个问题 除非手动在showdoc平台新增同样标题的文档时会出现这个问题 并且我也翻阅了showdoc提供出来的开放api 确实是根据文档标题来更新这个文档的 这个问题有可能是showdoc开放api存在一些问题 建议先尝试去showdoc删除这些重复的api 然后重新创建一个新目录 将api同步到新目录看下是否还会重复创建 image

Thepatterraining commented 8 months ago

好的,感谢,我用win10的电脑也试了一下,确实没有这些问题,我想这可能是一个问题导致的,等我周一去公司把mac的插件配置删了重新装一下试试看。

Thepatterraining commented 8 months ago

我把相关文件删除以后,卸载,再安装,然后需改showdoc配置,再次点击sync api,弹出目录,我选择新建目录test456,然后点击确定,发现没出来。再次新建目录test456提示分类已存在。

image

我点击取消,然后再次点击sync api,弹出目录还是啥也没有,但是可以再次新建目录test456啦。

image
Thepatterraining commented 8 months ago

还有个问题,我看文档里面写支持@see注释,我在注释里面加了好像不管用啊 /**

Thepatterraining commented 8 months ago

目录那个问题好了,我又重启了一下idea就好了。

wangdingfu commented 8 months ago

还有个问题,我看文档里面写支持@see注释,我在注释里面加了好像不管用啊 /* @see com.hewa.operate.constant.MemberTypeEnum#getName() / 这样加了以后并没有用。

/* @see com.hewa.operate.constant.MemberTypeEnum / @see后面直接配置枚举路径就可以了 不需要具体到方法

wangdingfu commented 8 months ago

还有个问题,我看文档里面写支持@see注释,我在注释里面加了好像不管用啊 /* @see com.hewa.operate.constant.MemberTypeEnum#getName() / 这样加了以后并没有用。

image image

Thepatterraining commented 8 months ago

你好,我又出现目录的问题了,我大概知道为啥出现了,在我刚配置了第二个showdoc的apiKey和项目设置以后,就出现了目录持久化失败的问题,我重启idea以后就好了,我觉得可能是每次配置以后都需要重启才管用,要不然就会出现持久化失败的问题。

wangdingfu commented 8 months ago

你好,我又出现目录的问题了,我大概知道为啥出现了,在我刚配置了第二个showdoc的apiKey和项目设置以后,就出现了目录持久化失败的问题,我重启idea以后就好了,我觉得可能是每次配置以后都需要重启才管用,要不然就会出现持久化失败的问题。

你的Idea是IC版的还是IU版本的 IU版的idea我验证了应该没问题 估计是IC版本的可能有些地方不兼容 我还没验证 我这两天验证下IC版本的

Thepatterraining commented 7 months ago

我的idea是社区版的