今天给大家安利一款接口文档生成器——JApiDocs。

Swagger想必大家都用过吧,非常方便,功能也十分强大。如果非要说Swaager有什么缺点,想必就是注解写起来比较麻烦。如果我说有一款不用写注解,就可以生成文档的工具,你心动了吗?他就是我们今天的主角——JApiDocs。

下面我们一起来看看如何使用!

一、添加依赖

<dependency>  <groupId>io.github.yedaxiagroupId>  <artifactId>japidocsartifactId>  <version>1.3version>dependency>

二、配置生成参数

我们新建一个项目,然后随便写一个main方法,增加生成文档的配置,然后运行main方法。

DocsConfig config = new DocsConfig();config.setProjectPath("F:\\Java旅途\\japi-docs"); // 项目根目录config.setProjectName("japi-docs"); // 项目名称config.setApiVersion("V1.0");       // 声明该API的版本config.setDocsPath("F:\\test"); // 生成API 文档所在目录config.setAutoGenerate(Boolean.TRUE);  // 配置自动生成Docs.buildHtmlDocs(config); // 执行生成文档

三、编码规范

由于JApiDocs是通过解析Java源码来实现的,因此如果要想实现想要的文档,还是需要遵循一定的规范。

3.1 类注释、方法注释和属性注释

如果我们想生成类的注释,我们可以直接在类上加注释,也可以通过加@description来生成。

/** * 用户接口类 */@RequestMapping("/api/user")@RestControllerpublic class UserController {}

/** * @author Java旅途 * @Description 用户接口类 * @Date 2020-06-15 21:46 */@RequestMapping("/api/user")@RestControllerpublic class UserController {}

如果我们想生成方法的注释,只能直接加注释,不能通过加@description来生成。

/** * 查询用户 * @param age 年龄 * @return R*/@GetMapping("/list")public R list(@RequestParam int age){

    User user = new User("Java旅途", 18);    return R.ok(user);}

JApiDocs可以自动生成实体类,关于实体类属性的注释有三种方式,生成的效果都是一样的,如下:

/** * 用户名称 */private String name;/** * 用户年龄 */private int age;
// 用户名称private String name;// 用户年龄private int age;
private String name;// 用户名称private int age;// 用户年龄

他除了支持咱们常用的model外,还支持IOS的model生成效果如下:

3.2 请求参数

如果提交的表单是 application/x-www-form-urlencoded 类型的key/value格式,则我们通过@param注解来获取参数,在参数后面添加注释,示例如下:

/**  * @param age 年龄  */@GetMapping("/list")public R list(@RequestParam int age){    User user = new User("Java旅途", 18);    return R.ok(user);}

生成的文档效果如下:

请求参数

参数名 类型 必须 描述
age int 年龄

如果提交的表单是 application/json 类型的json数据格式,如下:

/**  * @param user  * @return  */@PostMapping("/add")public R add(@RequestBody User user){    return R.ok(user);}

生成的文档效果如下:

请求参数

{  "name": "string //用户名称",  "age": "int //用户年龄"}

3.3 响应结果

我们知道,如果Controller声明了@RestController,SpringBoot会把返回的对象直接序列成Json数据格式返回给前端。JApiDocs也利用了这一特性来解析接口返回的结果,但由于JApiDocs是静态解析源码的,因此你要明确指出返回对象的类型信息,JApiDocs支持继承、泛型、循环嵌套等复杂的类解析。

因此我们不需要再写注释,它会根据我们的返回结果进行解析,效果如下:

返回结果:

{  "code": "int",  "msg": "string",  "data": {    "name": "string //用户名称",    "age": "int //用户年龄"  }}

最终,我们生成的接口文档,如下:

四、高级配置

4.1 @ApiDoc

如果你不希望把所有的接口都导出,我们可以在配置中设置config.setAutoGenerate(Boolean.FALSE);然后在想要生成的接口上添加@ApiDoc。

@ApiDoc有以下三个属性:

  • result: 这个可以直接声明返回的对象类型,如果你声明了,将会覆盖SpringBoot的返回对象
  • url: 请求URL,扩展字段,用于支持非SpringBoot项目
  • method: 请求方法,扩展字段,用于支持非SpringBoot项目
@ApiDoc(result = User.class, url = "/api/user/view", method = "post")

4.2 @Ignore

如果你不想导出对象里面的某个字段,可以给这个字段加上@Ignore注解,这样JApiDocs导出文档的时候就会自动忽略掉了。

public class User {    @Ignore    private int age;}

五、总结

JApiDocs就介绍到这里了,优势劣势大家很容易就看出来了。几乎不需要注释即可生成接口文档,仅有的几个注释我们也可以通过ide来自动生成。但是JApiDocs不具备Swagger在线调试功能。如果有一天JApiDocs支持在线调试后,那时候肯定会有一大波追随者,毕竟写代码的谁喜欢写多余的注解!

更多精彩:

记一次由Redis分布式锁造成的重大事故,避免以后踩坑!

6 个 Spring Boot 项目够经典,建议收藏!

数据量很大,分页查询很慢,推荐个优化方案!

京东把 Elasticsearch 用得真牛逼!日均5亿订单查询完美解决!

推荐一款免费开源的通用数据库工具

这么设计,Redis 10亿数据量只需要100MB内存

关注公众号,查看更多优质文章

最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

api响应泛型参数 swagger_你还在用丝袜哥(Swagger)?今天不如换换口味!相关推荐

  1. wxpay-api:pay_J2Pay – API响应

    wxpay-api:pay 介绍 该库中的神奇之处在于,无论网关是什么,其响应都是唯一的. 了解API响应后,您便可以轻松地将此响应用于进一步的交易,例如退款,作废或重新开票. 首先,在开始阅读时,所 ...

  2. J2Pay – API响应

    介绍 该库中的神奇之处在于,无论网关是什么,其响应都是唯一的. 了解API响应后,您便可以轻松地将此响应用于进一步的交易,例如退款,作废或重新开票. 首先,在开始阅读时,所有响应都是JSON. 所有响 ...

  3. Java这个高级特性-泛型,很多人还没用过!

    点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...

  4. HTTP API响应数据规范整理

    2019独角兽企业重金招聘Python工程师标准>>> 关于作者 马隆博(Lenbo Ma),Java,Javascript Blog: http://mlongbo.com E-M ...

  5. More Effective C# Item3 : 运行时检查泛型参数的类型并提供特定的算法

    我感觉这一条目应该算是对Item2的补充,还是在"约束"的条件下,如何使得程序得到最优化的结果,颇有"带着脚铐跳芭蕾"的意味.Item2中的条目可以看做是在有约 ...

  6. java反射基本使用,反射泛型参数类型获取

    背景: 因为项目controller层入参Req 和service 层DTO 入参,是两个类.需要在controller层将api接收到的参数向下传递到service层,参数名基本都是一致的.但是有时 ...

  7. APICACHE : Express/Node的API响应缓存中间件

    APICACHE : Express/Node的API响应缓存中间件 翻译来源:https://gitee.com/yunwisdoms/apicache 支持Redis或具有自动清除功能的内置内存引 ...

  8. (转)API接口防止参数篡改和重放攻击

    API重放攻击(Replay Attacks)又称重播攻击.回放攻击.他的原理就是把之前窃听到的数据原封不动的重新发送给接收方.HTTPS并不能防止这种攻击,虽然传输的数据是经过加密的,窃听者无法得到 ...

  9. API接口通讯参数规范(2)

    针对[API接口通讯参数规范]这篇文章留下的几个问题进行探讨. 问题1 试想一下,如果一个http请求返回一个500给我们,那我们是不是都不用看详情都知道该次请求发生了什么?这正是一个标准的结果码意义 ...

最新文章

  1. centos 安装 aria2 webui 实现网页下载
  2. 基于单片机的贪吃蛇游戏设计_前端入门,基于html,css,javascript的贪吃蛇游戏
  3. Centos 7 防火墙
  4. python 比赛成绩预测_大数据新研究:用六个月的跑步记录准确预测马拉松完赛成绩...
  5. qt中的qwidget如何实现自定义部件_2.3信号和槽(中)
  6. 用vs编译openssl静态库
  7. NFrog[NHibernate代码工具]发布第一个版本
  8. 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的汽车销售管理系统
  9. 【更新】火星人敏捷开发手册 2011-12-31
  10. mysql数据库undo日志恢复_MySQL的undo/redo日志和binlog日志,以及2PC
  11. 2021 年 4 月程序员工资统计,这太可怕了……
  12. Mysql DDL与DML
  13. c++ 时间类型详解(time_t和tm)
  14. 【017】【毕业设计】基于51单片机的频率计设计的Proteus仿真与实物设计
  15. 移动播放器html,支持移动平台的Html5播放器
  16. 非相参积累 matlab,非相参积累增益,比相参积累增益更难计算?
  17. 电商平台后台管理系统--->系统详细设计(订单管理模块)
  18. MobaXterm Xwindows打开应用程序模糊、缩放比例不对
  19. 计算机毕业设计(17)python毕设作品之鲜花水果销售系统
  20. 跟美团API对接,以及生成签名,同步数据到数据库

热门文章

  1. 理财成长之路 | 记账
  2. Java 利用http协议与Domino实现sso单点登录
  3. Android语音播报、后台播报、语音识别,移动开发工程师核心竞争力
  4. PyCharm搭建Spark开发环境windows下安装pyspark
  5. 区块链资料整理-技术篇(基础)
  6. Spring默认标签的解析
  7. 耳机专用升压芯片 3.3V同步升压IC 代替ME2188升压芯片高频1MHZ
  8. 【转自知乎】音频领域的天才机制,被绝大多数烧友误解了
  9. COSMIC数据库简介
  10. 噪鹃de“喔啊“悲惨的叫声