api响应泛型参数 swagger_你还在用丝袜哥(Swagger)?今天不如换换口味!
今天给大家安利一款接口文档生成器——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)?今天不如换换口味!相关推荐
- wxpay-api:pay_J2Pay – API响应
wxpay-api:pay 介绍 该库中的神奇之处在于,无论网关是什么,其响应都是唯一的. 了解API响应后,您便可以轻松地将此响应用于进一步的交易,例如退款,作废或重新开票. 首先,在开始阅读时,所 ...
- J2Pay – API响应
介绍 该库中的神奇之处在于,无论网关是什么,其响应都是唯一的. 了解API响应后,您便可以轻松地将此响应用于进一步的交易,例如退款,作废或重新开票. 首先,在开始阅读时,所有响应都是JSON. 所有响 ...
- Java这个高级特性-泛型,很多人还没用过!
点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...
- HTTP API响应数据规范整理
2019独角兽企业重金招聘Python工程师标准>>> 关于作者 马隆博(Lenbo Ma),Java,Javascript Blog: http://mlongbo.com E-M ...
- More Effective C# Item3 : 运行时检查泛型参数的类型并提供特定的算法
我感觉这一条目应该算是对Item2的补充,还是在"约束"的条件下,如何使得程序得到最优化的结果,颇有"带着脚铐跳芭蕾"的意味.Item2中的条目可以看做是在有约 ...
- java反射基本使用,反射泛型参数类型获取
背景: 因为项目controller层入参Req 和service 层DTO 入参,是两个类.需要在controller层将api接收到的参数向下传递到service层,参数名基本都是一致的.但是有时 ...
- APICACHE : Express/Node的API响应缓存中间件
APICACHE : Express/Node的API响应缓存中间件 翻译来源:https://gitee.com/yunwisdoms/apicache 支持Redis或具有自动清除功能的内置内存引 ...
- (转)API接口防止参数篡改和重放攻击
API重放攻击(Replay Attacks)又称重播攻击.回放攻击.他的原理就是把之前窃听到的数据原封不动的重新发送给接收方.HTTPS并不能防止这种攻击,虽然传输的数据是经过加密的,窃听者无法得到 ...
- API接口通讯参数规范(2)
针对[API接口通讯参数规范]这篇文章留下的几个问题进行探讨. 问题1 试想一下,如果一个http请求返回一个500给我们,那我们是不是都不用看详情都知道该次请求发生了什么?这正是一个标准的结果码意义 ...
最新文章
- centos 安装 aria2 webui 实现网页下载
- 基于单片机的贪吃蛇游戏设计_前端入门,基于html,css,javascript的贪吃蛇游戏
- Centos 7 防火墙
- python 比赛成绩预测_大数据新研究:用六个月的跑步记录准确预测马拉松完赛成绩...
- qt中的qwidget如何实现自定义部件_2.3信号和槽(中)
- 用vs编译openssl静态库
- NFrog[NHibernate代码工具]发布第一个版本
- 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的汽车销售管理系统
- 【更新】火星人敏捷开发手册 2011-12-31
- mysql数据库undo日志恢复_MySQL的undo/redo日志和binlog日志,以及2PC
- 2021 年 4 月程序员工资统计,这太可怕了……
- Mysql DDL与DML
- c++ 时间类型详解(time_t和tm)
- 【017】【毕业设计】基于51单片机的频率计设计的Proteus仿真与实物设计
- 移动播放器html,支持移动平台的Html5播放器
- 非相参积累 matlab,非相参积累增益,比相参积累增益更难计算?
- 电商平台后台管理系统--->系统详细设计(订单管理模块)
- MobaXterm Xwindows打开应用程序模糊、缩放比例不对
- 计算机毕业设计(17)python毕设作品之鲜花水果销售系统
- 跟美团API对接,以及生成签名,同步数据到数据库