spring-boot-route(六)整合 JApiDocs 生成接口文档

用户头像
Java旅途
关注
发布于: 2020 年 10 月 06 日

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



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



一、添加依赖



<dependency>
<groupId>io.github.yedaxia</groupId>
<artifactId>japidocs</artifactId>
<version>1.3</version>
</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")
@RestController
public class UserController {}
/**
* @author Java旅途
* @Description 用户接口类
* @Date 2020-06-15 21:46
*/
@RequestMapping("/api/user")
@RestController
public class UserController {}



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



/**
* 查询用户
* @param age 年龄
* @return R<User>
*/
@GetMapping("/list")
public R<User> 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<User> 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<User> 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支持在线调试后,那时候肯定会有一大波追随者,毕竟写代码的谁喜欢写多余的注解!



此是spring-boot-route系列的第六篇文章,这个系列的文章都比较简单,主要目的就是为了帮助初次接触Spring Boot 的同学有一个系统的认识。本文已收录至我的github,欢迎各位小伙伴star



githubhttps://github.com/binzh303/spring-boot-route



点关注、不迷路



如果觉得文章不错,欢迎关注、*点赞*、收藏,你们的支持是我创作的动力,感谢大家。



如果文章写的有问题,请不要吝啬,欢迎留言指出,我会及时核查修改。



如果你还想更加深入的了解我,可以微信搜索「Java旅途」进行关注。回复「1024」即可获得学习视频及精美电子书。每天7:30准时推送技术文章,让你的上班路不在孤独,而且每月还有送书活动,助你提升硬实力!



发布于: 2020 年 10 月 06 日 阅读数: 14
用户头像

Java旅途

关注

还未添加个人签名 2020.06.17 加入

公众号:Java旅途

评论

发布
暂无评论
spring-boot-route(六)整合JApiDocs生成接口文档