真的别再用swagger了

第一,Swagger 这个工具能够自动生成 API 接口文档,在线调试,节省了许多书写文档的时间,超级强劲。

但是,想要文档生成的合格,还是要书写大量的注解。有没有一种连注解都不用写的方式呢?

smart-doc简介

今天了不起给大家推荐一个技术:smart-doc,看名字就知道,它是 智能-文档。直接分析代码,根据代码含义生成文档(开个玩笑,它还没有那么智能);实则它是利用的注释,来生成文档,还是需要写注释的。

官方介绍:smart-doc是一款同时支持JAVA REST API和Apache Dubbo RPC接口文档生成的工具,smart-doc在业内率先提出基于JAVA泛型定义推导的理念, 完全基于接口源码来分析生成接口文档,不采用任何注解侵入到业务代码中。你只需要按照java-doc标准编写注释, smart-doc就能帮你生成一个简易明了的Markdown、HTML5、Postman Collection2.0+、OpenAPI 3.0+的文档。

swagger和smart-doc的对比

我们来看看swagger和smart-doc的区别

来看看smart-doc 的代码

真的别再用swagger了

如果是swagger 的写法,每个字段都要加上 @ApiModelProperty(“xxx”) 的注解,如果有几十个字段,几十个类,那代码量多的可不小。

不过这些类一般都是自动生成工具生成的,对写代码的人影响不大,不过这样子写倒是简洁了不少,甚得我意~

可能有人就说了,我不写注释,只写swagger注解,看起来也很简洁,这也的确 没错。

真的别再用swagger了

的确 看起来很简洁,不过没有文档注释的情况下,在其他类里你是看不到这个字段的解释的,每次找字段都得回到这个类看看到底是不是这个字段。如果你和同事们的英语都 very good,当我没说。

如果是api接口,smart-doc想要生成文档,需要写成这样(好像看起来什么都没写)

真的别再用swagger了

而swagger就需要加上@ApiOperation()这个注解,如果是个参数多的接口,还需要@ApiImplicitParams()这个注解,徒增学习成本

真的别再用swagger了

使用smart-doc

总共需要3步:

  1. 引入pom依赖,是一个插件<!– smart-doc插件 –>
    <plugin>
    <groupId>com.github.shalousun</groupId>
    <artifactId>smart-doc-maven-plugin</artifactId>
    <version>${smart-doc-plugin.version}</version>
    <configuration>
    <!–指定生成文档的使用的配置文件–>
    <configFile>${basedir}/src/main/resources/smart-doc.json</configFile>
    <!–指定项目名称–>
    <projectName>${project.name}</projectName>
    <excludes>
    <!–格式为:groupId:artifactId;参考如下–>
    <!–也可以支持正则式如:com.alibaba:.* –>
    <exclude>com.fu:common-.*</exclude>
    <exclude>com.fu:generator</exclude>
    </excludes>
    </configuration>
    <executions>
    <execution>
    <!–如果不需要在执行编译时启动smart-doc,则将phase注释掉–>
    <phase>compile</phase>
    <goals>
    <goal>openapi</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
  2. 编写smart-doc.json文件{
    // 参考文档:https://smart-doc-group.github.io/#/zh-cn/start/quickstart
    “outPath”: “D:\111”,

    “coverOld”: true,
    “allInOne”: true, // 是否将文档合并到一个文件中,一般推荐为true
    “createDebugPage”: true,
    //@since 2.0.0 smart-doc支持创建可以测试的html页面,仅在AllInOne模式中起作用。
    “isStrict”: false,
    //是否开启严格模式
    // controller包过滤,多个包用英文逗号隔开
    “packageFilters”: “com.fu.system.controller.*”,
    “projectName”: “system”,
    “sortByTitle”: true,
    // 接口排序
    “ignoreRequestParams”:[
    //忽略请求参数对象,把不想生成文档的参数对象屏蔽掉,@since 1.9.2
    “javax.servlet.http.HttpServletRequest”,
    “javax.servlet.http.HttpServletResponse”,
    “javax.servlet.http.HttpSession”
    ]
    }

  3. 运行这个插件,如果很熟悉mvn命令,在命令行运行它也行;可以生成openapi、postman、html、Markdown等各种格式的文档

关于pom 和 smart-doc.json 的配置,具体配置可前往官方文档查看:

https://smart-doc-group.github.io/#/zh-cn/?id=smart-doc

文档自动化

如果它不能和swagger一样,自动部署文档,还得手动,那也不会来推荐这个了。

官方推荐方式:smart-doc + Torna (http://torna.cn/) 组成行业领先的文档生成和管理解决方案,使用smart-doc无侵入完成Java源代码分析和提取注释生成API文档,自动将文档推送到Torna企业级接口文档管理平台。

需要额外部署一个 Torna 文档接口服务,类似 yapi;许多企业也都是单独部署的接口文档服务。

可以看出来界面比swagger好太多了

真的别再用swagger了

了不起这里给大家另一种方案,本地自动部署,smart-doc + apifox(postman应该也可以)

apifox -> 接口导入 -> 自动同步

真的别再用swagger了

真的别再用swagger了

这个数据源URL可以直接配置为 file:///D:/111/openapi.json,在你配置pom的时候,直接配置成编译项目时生成 openapi格式的文档,就可以自动部署到apifox,完美~

小结

今天了不起对这个smart-doc就介绍到这里了,感兴趣的小伙伴可以用起来了,对代码0侵入,简直太适合我这种强迫症患者了。

要注意风险:毕竟传闻都说注释写的好的人容易吃亏~~~

© 版权声明

相关文章

19 条评论

  • 头像
    五星照明澳克士灯饰 读者

    接口文档必须用注解方式,可以用knife4j直接生成。注解还可以用于日志等。去自学精灵逛逛吧,这个网站很强大,这些里边都有

    无记录
    回复
  • 头像
    口腔溃疡给我滚吧 投稿者

    不用这么麻烦,idea有apifox-helper插件,直接把接口导入到apifox。没有中间商赚差价,非常4好用,统一响应格式

    无记录
    回复
  • 头像
    白杨澍的三次幂 读者

    天天这技术那技术的,其实你真正悟了,就应该明白换来换去只是形式上换,优缺点依然是各自都有,只是喜好变了而已,其实没所谓

    无记录
    回复
  • 头像
    凉鸡抽玉溪 读者

    目的不是文档,目的是方便调试和其他工具集成,团队协作,我觉得swagger比这个smart doc还是要方便很多

    无记录
    回复
  • 头像
    LBHH88 读者

    ,我看新公司用的这个,没细看,一直以为是swagger的自定义ui,准备在自己项目里用上,一直找到

    无记录
    回复
  • 头像
    竞圈先锋官 读者

    收藏了

    无记录
    回复
  • 头像
    风轻扬 读者

    swagger不是可以自动生成代码么?各种语言都可以,我pyhon net java node都可以 它官方网站就可以自动生成

    无记录
    回复
  • 头像
    故渊 读者

    //@悠闲不置可否:不用这么麻烦,idea有apifox-helper插件,直接把接口导入到apifox。没有中间商赚差价,非常4好用,统一响应格式

    无记录
    回复
  • 头像
    顾意伤害罪 投稿者

    人家好的很

    无记录
    回复
  • 头像
    是漫慢呀 投稿者

    能生成前端能用的ts类型声明文件吗

    无记录
    回复
  • 头像
    贝塔 读者

    收藏一下

    无记录
    回复
  • 头像
    吾乃小神仙阿翔也 读者

    但凡把接口文档集成到项目里基本都是烂尾项目,谁用谁知道

    无记录
    回复
  • 头像
    y一只小羊_ 投稿者

    满喜欢smart-doc的

    无记录
    回复
  • 头像
    点康姆 读者

    用用

    无记录
    回复
  • 头像
    可口可乐迷你罐w 读者

    api文档

    无记录
    回复
  • 头像
    别捏我兔子耳朵 读者

    一直在用,非常好

    无记录
    回复
  • 头像
    我女好香 投稿者

    赞,这个和直接在pb文件写注释生成文档一样

    无记录
    回复
  • 头像
    玄黄大士 读者

    接了个二开的单,前端Vue,后端PHP。本想,这不手到擒来!看了看后端源码,有点懵,仔细研究加百度搜索,原来用了个“niucloud-admin”框架,还真没接触过,又涨知识了!

    无记录
    回复
  • 头像
    友好北路支行朱晓丹 读者

    收藏了,感谢分享

    无记录
    回复