上一篇文章中介绍了使用Swagger生成接口文档,很是方便,功能也十分强大。若是非要说Swaager有什么缺点,想必就是注解写起来比较麻烦。若是我说有一款不用写注解,就能够生成文档的工具,你心动了吗?他就是咱们今天的主角——JApiDocs。前端
下面咱们一块儿来看看如何使用!java
<dependency> <groupId>io.github.yedaxia</groupId> <artifactId>japidocs</artifactId> <version>1.3</version> </dependency>
咱们新建一个项目,而后随便写一个main方法,增长生成文档的配置,而后运行main方法。git
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源码来实现的,所以若是要想实现想要的文档,仍是须要遵循必定的规范。github
若是咱们想生成类的注释,咱们能够直接在类上加注释,也能够经过加@description来生成。spring
/** * 用户接口类 */ @RequestMapping("/api/user") @RestController public class UserController {} /** * @author Java旅途 * @Description 用户接口类 * @Date 2020-06-15 21:46 */ @RequestMapping("/api/user") @RestController public class UserController {}
若是咱们想生成方法的注释,只能直接加注释,不能经过加@description来生成。json
/** * 查询用户 * @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能够自动生成实体类,关于实体类属性的注释有三种方式,生成的效果都是同样的,以下:api
/** * 用户名称 */ private String name; /** * 用户年龄 */ private int age;
// 用户名称 private String name; // 用户年龄 private int age;
private String name;// 用户名称 private int age;// 用户年龄
他除了支持我们经常使用的model外,还支持IOS的model生成效果以下:微信
若是提交的表单是 application/x-www-form-urlencoded
类型的key/value
格式,则咱们经过@param注解来获取参数,在参数后面添加注释,示例以下:app
/** * @param age 年龄 */ @GetMapping("/list") public R<User> list(@RequestParam int age){ User user = new User("Java旅途", 18); return R.ok(user); }
生成的文档效果以下:ide
请求参数
参数名 | 类型 | 必须 | 描述 |
---|---|---|---|
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 //用户年龄" }
咱们知道,若是Controller
声明了@RestController
,SpringBoot会把返回的对象直接序列成Json数据格式返回给前端。 JApiDocs也利用了这一特性来解析接口返回的结果,但因为JApiDocs是静态解析源码的,所以你要明确指出返回对象的类型信息,JApiDocs支持继承、泛型、循环嵌套等复杂的类解析。
所以咱们不须要再写注释,它会根据咱们的返回结果进行解析,效果以下:
返回结果:
{ "code": "int", "msg": "string", "data": { "name": "string //用户名称", "age": "int //用户年龄" } }
最终,咱们生成的接口文档,以下:
若是你不但愿把全部的接口都导出,咱们能够在配置中设置config.setAutoGenerate(Boolean.FALSE);而后再想要生成的接口上添加@ApiDoc。
@ApiDoc有如下三个属性:
@ApiDoc(result = User.class, url = "/api/user/view", method = "post")
若是你不想导出对象里面的某个字段,能够给这个字段加上@Ignore
注解,这样JApiDocs导出文档的时候就会自动忽略掉了。
public class User { @Ignore private int age; }
JApiDocs就介绍到这里了,优点劣势你们很容易就看出来了。几乎不须要注释便可生成接口文档,仅有的几个注释咱们也能够经过ide来自动生成。可是JApiDocs不具有Swagger在线调试功能。若是有一天JApiDocs支持在线调试后,那时候确定会有一大波追随者,毕竟写代码的谁喜欢写多余的注解!
此是spring-boot-route系列的第六篇文章,这个系列的文章都比较简单,主要目的就是为了帮助初次接触Spring Boot 的同窗有一个系统的认识。本文已收录至个人github,欢迎各位小伙伴star
!
github:https://github.com/binzh303/s...
若是以为文章不错,欢迎关注、点赞、收藏,大家的支持是我创做的动力,感谢你们。
若是文章写的有问题,请不要吝啬,欢迎留言指出,我会及时核查修改。
若是你还想更加深刻的了解我,能够微信搜索「Java旅途」进行关注。回复「1024」便可得到学习视频及精美电子书。天天7:30准时推送技术文章,让你的上班路不在孤独,并且每个月还有送书活动,助你提高硬实力!