swagger隐藏实体类字段_你还在用 Swagger?试试这个神器!

本文介绍了JApiDocs,一个无需Swagger注解即可生成接口文档的工具。通过添加依赖、配置参数,遵循一定的编码规范,如类、方法和属性注释,JApiDocs能自动生成包括实体类在内的详细文档。同时,文章讨论了高级配置选项如@ApiDoc和@Ignore,帮助控制文档的生成和字段隐藏。
摘要由CSDN通过智能技术生成

b6044a75c26bfaf6fb4bfd740fe4976f.png

Java技术栈

www.javastack.cn

关注阅读更多优质文章

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

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

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

一、添加依赖

  io.github.yedaxia  japidocs  1.3

二、配置生成参数

我们新建一个项目,然后随便写一个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生成效果如下:

9bae040645083036541879f92e49a846.png

1be17daedad620d9fd7b19ed15ebffd4.png

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);}

生成的文档效果如下:

请求参数

参数名类型必须描述
ageint年龄

如果提交的表单是 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 //用户年龄"  }}

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

24aba1488a988ef71c1fd703d891ced0.png

四、高级配置

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支持在线调试后,那时候肯定会有一大波追随者,毕竟写代码的谁喜欢写多余的注解!~

最近热文: 1、重磅!《Java开发手册(嵩山版)》最新发布 2、打破你的认知!Java空指针居然还能这样玩 3、盘点 35 个 Apache 顶级项目,我拜服了… 4、Spring Boot 太狠了,一次发布 3 个版本! 5、Spring Boot 如何快速集成 Redis? 6、盘点 6 个被淘汰的 Java 技术,曾经风光过! 7、Spring Boot Redis 实现分布式锁,真香! 8、Spring Boot 干掉了 Maven 拥抱 Gradle! 9、公司来了个新同事不会用 Lombok! 10、同事写了个隐藏 bug,我排查了 3 天! 扫码关注 Java技术栈 公众号阅读更多干货。

ba8a0a2e95299d1465fe9c2bc108926f.png

点击「」获取面试题大全~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值