delphi ui编辑工具源码_一种无侵入比swagger-ui兼容性更好更简单的API文档生成方案
在后端项目中,难免遇到需要写接口文档方便第三方调用的场景,一般业界最常用的方案是使用swagger。Java项目中,一般采用springfox项目,它集成了swagger和swagger-ui,不需要单独部署项目,可让文档随着项目一起发布。
为什么不使用swagger-ui
但是开源项目往往是开源一时热,事后拂衣去,缺少维护。这个项目已经两年多没有维护了,很多人在issue反馈过bug,作者一年前表示自己比较忙,没空维护。
springfox最新的版本是2.9.2,不支持spring5(虽然有个快照版支持spring5,但一直没发布,整合也有点麻烦)。spring5比较大的一个改变就是增加了webflux,因此旧版springfox无法兼容spring5的。
其实用快照版,稍作修改也能让springfox支持webflux,但是我不是很喜欢这种做法。一个是增加了打包体积和运行内存占用,另一个则是swagger的使用污染了Java源码,很是不美观,强迫症不能忍。
@RestController@RequestMapping("/dataspace/api/v1/hive")@Api(value = "hive", description = "hive资源管理")public class HiveManagerController { @Autowired HiveManagerService hiveManagerService; @RequestMapping(value = "/list", method = {RequestMethod.POST}) @ApiOperation(value = "资源列表", notes = "") public PageResult showPublic(@ApiParam(value = "hive查询对象") @RequestBody PageReqParam hiveReq) { result = hiveManagerService.getList(hiveReq); return result; }
源码中混入了各种ApiParam、Api、ApiOperation注解。
再加上我现在使用的springcloud套件,需要在gateway的feign接口上加注释,这样的话,无论是springfox,还是很多第三方的api doc工具都很难胜任。
扩展JDK自带工具javadoc
于是,我想到了另外一种方法,就是javadoc。然而javadoc自带的注解很有限,不能满足第三方对文档的需求,比如
/** * 根据节点名删除主机 * @method DELETE * @path host/delHostByNodeName * @param nodeName 节点名 * @param cluster 集群名 * @return JSON */ @DeleteMapping("/delHostByNodeName") public String delHostByNodeName(@RequestParam("nodeName") String nodeName,@RequestParam("cluster") String cluster);
javadoc并不认识method和path这两个注解,生成的文档还是缺少一些必须要的信息。
这个不难,扩展下taglet即可。
先引入maven依赖
jdk.tools jdk.tools 1.8system${JAVA_HOME}/lib/tools.jar
扩展taglet代码
package com.github.cloud.ali.common.tool;import com.sun.javadoc.Tag;import com.sun.tools.doclets.Taglet;import java.util.Map;public class MethodTaglet implements Taglet { private String NAME = "HTTP请求类型"; private String HEADER = "HTTP请求类型:"; @Override public boolean inField() { return false; } @Override public boolean inConstructor() { return false; } @Override public boolean inMethod() { return true; } @Override public boolean inOverview() { return true; } @Override public boolean inPackage() { return true; } @Override public boolean inType() { return true; } @Override public boolean isInlineTag() { return false; } @Override public String getName() { return NAME; } @Override public String toString(Tag tag) { return "" + HEADER + "" + "
" + tag.text() + ""; } @Override public String toString(Tag[] tags) { return ""; }}
同理,path注解也是类似的实现。编译命令如下:
javadoc -protected -splitindex -use -author -version -encoding utf-8 -charset utf-8 -d /usr/jackma/doc -windowtitle "ali 文档" $(ls /usr/jackma/ali/ali-common/src/main/java/com/github/cloud/ali/common/model/*.java |tr "" " ") $(ls /usr/jackma/ali/ali-gateway/src/main/java/com/github/cloud/ali/feign/*.java |tr "" " ") -tag method:a:"HTTP请求方法:" -tag path:a:"请求路径:" -tagletpath /usr/jackma/ali/ali-common/src/main/java/com/github/cloud/ali/common/tool/MethodTaglet.java -tagletpath /usr/jackma/ali/ali-common/src/main/java/com/github/cloud/ali/common/tool/PathTaglet.java -taglet com.github.cloud.ali.common.tool.MethodTaglet -taglet com.github.cloud.ali.common.tool.PathTaglet
其实就是在javadoc这个JDK自带工具的命令里加上了taglet参数,指定了自定义注解。
最终效果如下:
增强版javadoc
可以看到,文档内容更详细,显示也更美观了。
还可以进一步,加上数据类型的注解,这样就更完善了。
虽然离swagger-ui还有点差距,但是比原版javadoc好多了。最大的优点是没有任何限制和对源码的污染。
不得不说,Java的扩展性确实很好。
总结
swagger-ui优点:
1.集成度高,文档随项目一期发布
2.文档内容详细,并且带有调试工具
3.可导出json文件,界面可自定义
swagger-ui缺点:
1.引入第三方依赖,增加打包体积和运行内存
2.兼容性差,无法通用于所有Java项目
3.对源码有侵入,污染Java源代码
4.缺乏维护和更新
扩展javadoc优点:
1.源码无侵入
2.扩展性强,兼容性高
扩展javadoc缺点:
1.界面不够美观,文档不具有通用性
2.需要手工维护文档生成命令
delphi ui编辑工具源码_一种无侵入比swagger-ui兼容性更好更简单的API文档生成方案相关推荐
- semantic ui中文文档_求你别再用swagger了,给你推荐几个在线文档生成神器
开局先推荐: Java面试刷题网站www.javazhiyin.com 前言 最近公司打算做一个openapi开放平台,让我找一款好用的在线文档生成工具,具体要求如下: 必须是开源的 能够实时生成在 ...
- delphi gui编辑工具源码_Python 快速构建一个简单的 GUI 应用
点击上方"AirPython",选择"加为星标" 第一时间关注 Python 技术干货! 1. 介绍 Python GUI 常用的 3 种框架是:Tkinter ...
- 猿创征文|小而巧的API文档生成工具之smart-doc
文章目录 smart-doc介绍 smart-doc特性 smart-doc的最佳搭档 谁在使用smart-doc smart-doc的优缺点 smart-doc和swagger区别比较 smart- ...
- php自写api文档生成工具
框架改版后的第二个版本定下来了,这两天也比较轻松,于是就折腾给项目建个好看的api文档. 各种折腾.先是折腾phpDocumentor2,用phpdoc开源工具来建立文档,好不容易安装成功,各个模板都 ...
- apiDoc 一款很不错api文档生成工具
apiDoc 一款很不错api文档生成工具,在开发接口的时候,需要给同事看相应的接口文档.给大家推荐一个生成文档的工具--apiDoc,最后生成的文档以网页的形式发布,方便快捷,便于阅读. 创建项目目 ...
- android api文档_【粉丝投稿】无需额外注解的 SpringBoot API文档生成工具
点击上方"蓝字"关注我们吧! JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又 ...
- 一款零注解侵入的 API 文档生成工具,你用过吗?
以下文章来源方志朋的博客,回复"666"获面试宝典 介绍 smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart ...
- springboot的api_【粉丝投稿】无需额外注解的 SpringBoot API文档生成工具
点击上方"蓝字"关注我们吧! JApiDocs是一个无需额外注解.开箱即用的SpringBoot接口文档生成工具. 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又 ...
- java smart算法_Java Restful API 文档生成工具 smart-doc
谁说生成api文档就必须要定义注解? 谁说生成接口请求和返回示例必须要在线? 用代码去探路,不断尝试更多文档交付的可能性. 如果代码有生命,为什么不换种方式和它对话! 一.背景 没有背景.就自己做自己 ...
最新文章
- Linux学习(十五)---Python定制篇---apt软件管理和远程登录
- libpcap捕包机制分析(三)
- vue v-if指令
- 开发HTML5手机游戏的5个注意要点--手机开发前景-- 转
- ACM算法--二分法--模板
- [Grid Layout] Place grid items on a grid using grid-column and grid-row
- 怎么撤回操作_微信又更新,拍一拍能撤回了
- 花书+吴恩达深度学习(二二)自编码器(欠完备,DAE,CAE,PSD)
- 计算机地图制图的点状符号制作,计算机地图制图验手册汇编.doc
- elasticsearch(七)java 搜索功能Search Request的介绍与使用
- 基于SpringBoot 学生成绩管理系统的设计与实现
- PHP的消息队列详解
- 知乎80万高赞的window10壁纸
- php微信公众号支付实例教程,PHP微信公众号支付教程(含图文)
- MCUXpresso开发NXP RT1060(3)——移植LVGL到NXP RT1060
- 工业交换机的内部组成是什么?
- 云时代的IT应用质量管理新动向
- 2022届秋招,从被拒到上岸 | 谈谈YK菌在2021年的经历与收获
- 中国人发假发和延伸行业市场供需与战略研究报告
- 网页PDF下载,有了这3种方法,文档随便下
热门文章
- 在线音乐用户寄望用爱发电,资本不愿无米之炊
- 我月入过万,送着外卖写着诗
- 男性护肤热潮难以孕育下一个“完美日记”?
- mysql5.6的安装步骤_MySQL5.6安装步骤
- heroku能用mysql吗_heroku连接到mysql数据库
- python装饰器有几种_python几种装饰器的用法
- linux动态分配全局置换,深入理解计算机系统 第九章 虚拟存储器
- php中删除评论怎么做的,php实现评论回复删除功能
- Python中定义函数的三种形式
- Python教程:shift函数实现数据偏移的方法