写文档太麻烦,试试这款 IDEA 插件吧!
前言
每次开发完新项目或者新接口功能等,第一件事就是提供接口文档。说到接口文档,当然是用 Markdown 了。各种复制粘贴字段,必填非必填,字段备注,请求返回示例等等。简直是浪费时间哇。所以想到了开发一款插件来解决重复复制文档的问题。下面来看我介绍介绍这款插件。
PS:插件比较简陋,还需要不断迭代。
公众号:liuzhihangs,记录工作学习中的技术、开发及源码笔记;时不时分享一些生活中的见闻感悟。欢迎大佬来指导!
为什么开发插件
每次在对外提供接口时都要写文档,各种麻烦,并且文档耗费了很大一部分时间。也使用了一些文档工具,在线写作工具,最终还是比较喜欢自己手写文档。
使用过的生成工具
- Swagger : 添加依赖,配置类及描述信息,然后在方法及实体上添加注解,启动项目便可以通过访问
xxxx/swagger-ui.html查看接口文档; - API Doc :添加配置文件及注释,安装
npm并通过执行命令生成文档; - SmartDoc :添加依赖及注释后执行测试类生成文档;
- API2DOC :添加依赖,开启注解,通过注解配置生成文档。
上面四种方法,无疑都需要添加依赖,使用注解等方式,可以说有一定的代码侵入性。
使用过的接口文档工具
- ShowDoc :曾经一段时间很喜欢用这个, Markdown 语法,方便直观。不过就是要自己手写;
- YApi :现在在使用 YApi,可以通过 Swagger 导入;
- VS Code 写 Markdown :直接离线写 Markdown ,可以导出 PDF、Word、Html。
自己写文档比较重复,繁琐,不过个人比较喜欢 Markdown 格式。简洁直观。并且配合着我之前写的 IDEA 插件 copy-as-json 和 Tookit 将实体复制为 json 字符串,用来快速生成请求样例和返回样例,还是可以减少一定的工作量的。
其他使用方式
使用各种在线协作工具,腾讯文档、语雀、石墨文档。使用离线版本 PDF、Word、Excel 等等。也有一些其他的文档工具,不过自己都没有使用过或者调研过了。
基本上这些文档工具要么通过代码侵入的方式生成文档,要么自己手撸文档。总体来说各有千秋。
个人手写更方便
个人比较喜欢的就是手写 Markdown 。
下面是两幅图:


有时候文档比较多的时候,就写的累了。尤其是最近使用了 YApi , 个人感觉使用 Swagger 然后导入到 YApi 里面还是挺方便的,省时省力。
后来就想,既然 YApi 提供接口,那我是不是可以自己生成,然后传到 YApi 中呢?
所以就开始着手这个插件的开发。
使用及功能
既然已经开发好最基础版本了,当然也得介绍下,首先看图:

通过图简单介绍下使用以及功能:
使用
使用方式很简单,直接在 Controller 类或者 Controller 类的公共非静态方法内右键唤出菜单,单机 Doc View 即可。

只能在 Controller 类或者 Controller 类的公共非静态方法内使用。至于两者的区别,后续会介绍。
这里可能会有小伙伴们发出疑问:Dubbo 接口也要写文档,难道不可以么?
嗯~ 可以!但是现在不支持~
功能
基本功能就是截图展示的那样。
- 左侧显示接口名及列表,右侧展示接口信息;
- 点击
Copy 按钮就会将展示的信息原本对应的 Markdown 文本复制到剪贴板; - 在 Class 内部点击,生成的如图所示的列表,而在方法内右键生成的是只有本方法的。
使用说明
Dubbo 接口,当前版本不支持,所以下面介绍的全都是在 Class 上的使用:
要生成文档,需要满足什么条件?
- 目标类内部有方法;
- 类必须有相关
Spring注解。org.springframework.stereotype.Controllerorg.springframework.web.bind.annotation.RestController
生成文档,接口方法需要满足什么条件?
文档的方法:Public 修饰且非静态方法(static 修饰),方法上包含以下注解:
org.springframework.web.bind.annotation.GetMappingorg.springframework.web.bind.annotation.PostMappingorg.springframework.web.bind.annotation.GetMappingorg.springframework.web.bind.annotation.DeleteMappingorg.springframework.web.bind.annotation.PatchMappingorg.springframework.web.bind.annotation.RequestMapping
文档模版是否可以设置?
当前版本文档模版只有展示的这个,不支持自定义模版。
接口名称是如何设置的?
接口名称默认取值如图截图所示
类名#方法名;
支持在注释上使用
@name设置接口名。
接口描述是从哪里获取的?
接口描述直接取的方法注释;
如果有
@description标签,则会优先使用标签对应的描述。
请求路径是如何生成的?
取 Class 和 Method 上的 path 进行拼装组成。
请求方式如何设置?
根据 Method 上的注解生成。
请求参数及请求示例的需要设置什么?
根据是否有
@RequestBody注解,生成请求 Header 是否为 json 还是 form。同时会检测请求参数中是否有@RequestHeader注解;
对象生成列表;
根据请求是 json 还是 form 生成对应的请求示例。
返回参数及返回示例怎么生成?
支持对象,返回空,返回带泛型方式。这里的泛型仅支持单个泛型且名称为 T。

总结
Q&A
Q: Doc View 插件去哪里下载?
A:
- 可以直接通过 IDEA 插件仓库,直接搜索名称即可;
- 在 GitHub 通过 Releases 下载;
- 关注公众号并发送
Doc View相关关键字(doc/doc view)获取。
Q: Doc View 是否开源?
A: 是的。开源地址为:https://github.com/liuzhihang/doc-view,有兴趣的小伙伴,可以给个 Star ,如果想增加一些功能,也可以提 PR。
结束语
插件开发从最开始开发到今天发布第一版,中间经历了很长一段时间,毕竟只是业余时间开发,就断断续续的写,不过现在最简单版本已经可以使用了。
目前来看,只有一个 Copy 功能,不过基本上可以满足使用。至于其他的需求,比如:自定义模版、支持 Dubbo 接口、预览导出等功能就需要后续不断迭代了。
个人开发精力有限,小伙伴在使用过程中遇到肯定会遇到 bug,或者是有其他的功能及使用建议,都可以通过以下方式反馈:
- 关注公众号:『 刘志航 』 通过读者讨论进行留言;
- 在 GitHub 上提 Issues;
- 在插件帮助页面留言;
- 文章结尾留言;
最后,感谢小伙伴们的支持。欢迎下载体验,并提出相关建议及意见。
写文档太麻烦,试试这款 IDEA 插件吧!的更多相关文章
- Markdown: 用写代码的思维写文档
作者:吴香伟 发表于 2014/08/07 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 本文不讲解Markdown的语法规则,只关注它带来的好处以及我使用的方 ...
- 使用开源文档工具docsify,用写博客的姿势写文档
前提 下面的简介摘抄自docsify的官网 https://docsify.js.org 中的简介 docsify是一个神奇的文档网站生成器.他可以快速帮你生成文档网站.不同于GitBook.Hexo ...
- 【实习记】2014-08-15文档太少看着源码用cgicc+stl库之模板谓词函数对象
总结1: 今天找到了昨天scanf的问题答案,scanf与printf一样的神奇而复杂,稍不留神,就会被坑.scanf函数在读入非空白符分割的多个字符串的解决方法是这个:/* 以 | 分割 * ...
- ToShowDoc拯救不想写文档的你
ToShowDoc拯救不想写文档的你 写注释已经够折磨开发者了,显然天天curd的我们再去写文档岂不是分分种要被逼疯. 我想每个人都有这种经历 加了一个参数文档忘了更新 参数名更改文档忘了更新 删掉一 ...
- Swagger2边写代码边写文档
作为一个开发人员最怕的就是写文档了,但是要想成为一个合格的程序员,写好文档也是一个必备的技能.开发中我们经常要写接口服务,既然是服务就要跟别人对接,那难免要写接口文档,那么如何”优雅“的写接口文档 ...
- 使用Markdown写文档
转载于:http://blog.csdn.net/xiahouzuoxin/article/details/19752603 Markdown是一种网络书写语言,其目标是实现易读易写,且兼容HTML语 ...
- 用sphinx-doc优雅的写文档
Sphinx 是一个工具,它使得创建一个智能而美丽的文档变得简单.作者Georg Brandl,基于BSD许可证. 起初为写 Python 文档而诞生的 Sphinx,支持为各种语言生成软件开发文档. ...
- 如何使用gitbook写文档
本文主要参考资料为该网址:https://github.com/GitbookIO/gitbook/blob/master/docs/setup.md 如何想使用现成的gitbook,网络上虽说可以搜 ...
- 懒得写文档,swagger文档导出来不香吗
导航 前言 离线文档 1 保存为html 2 导出成pdf文档 3 导出成Word文档 参考 前言 早前笔者曾经写过一篇文章<研发团队,请管好你的API文档>.团队协作中,开发文档的重 ...
随机推荐
- 【Linux】一些文件限制配置
linux资源限制配置文件是/etc/security/limits.conf:限制用户进程的数量对于linux系统的稳定性非常重要. limits.conf文件限制着用户可以使用的最大文件数,最大线 ...
- 《C++primerplus》第12章练习题
做一下倒数两题,都是在队列模拟的程序基础上做点修改测试. 5.找出平均等候时间为1分钟时,每小时到达的客户数为多少(试验时间不少于100小时). 指定队伍最大长度10人,模拟100小时.粗略估计答案在 ...
- P2034 选择数字 / P2627 [USACO11OPEN]Mowing the Lawn G
Link 题目描述 给定一行 \(n\) 个非负整数 \(a[1]..a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输入 ...
- 【题解】CF1375D Replace by MEX
\(\color{purple}{Link}\) \(\text{Solution:}\) 观察到题目要求操作次数不超过\(2n,\)且不必最小化操作次数,所以一定是构造题. 考虑将序列转化为\([0 ...
- 达梦数据库_DM8配置实时主备
1.环境说明 准备三台机器DM_HD1.DM_HD11.DM_SH,DM_HD1和DM_HD11用来部署主备库,DM_SH用来部署确认监视器.其中DM_HD1和DM_HD11配置两块网卡,一块接入内部 ...
- SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理|前后端分离(下)----筑基后期
写在前面 在上一篇文章<SpringBoot整合Shiro+MD5+Salt+Redis实现认证和动态权限管理(上)----筑基中期>当中,我们初步实现了SpringBoot整合Shiro ...
- Windows 编程基础
1 Windows应用程序的分类 1.1 控制台程序 DOS程序,本身没有窗口,通过WINDOWS下的DOS窗口执行. 1.2 窗口程序 拥有自己的窗口,通过窗口可以和用户进行交互.(比如:记事本,画 ...
- spring boot:spring security+oauth2+sso+jwt实现单点登录(spring boot 2.3.3)
一,sso的用途 ? 1,如果有多个应用系统,用户只需要登录一次就可以访问所有相互信任的应用系统. 不需要每次输入用户名称和用户密码, 也不需要创建并记忆多套用户名称和用户密码. 2,系统管理员只需维 ...
- linux(centos8):lnmp环境编译安装zabbix5.0
一,zabbix的用途: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案 zabbix能监视各种网络参数,保证服务器系统的安全运营: 并提供灵活的通知机制以 ...
- request-html 使用
from requests_html import HTMLSessionsession = HTMLSession()resp = session.get('http://www.spbeen.co ...