上一篇文章中介绍了应用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")@RestControllerpublic class UserController {}/** * @author Java旅途 * @Description 用户接口类 * @Date 2020-06-15 21:46 */@RequestMapping("/api/user")@RestControllerpublic 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
!
github:https://github.com/binzh303/s...
点关注、不迷路
如果感觉文章不错,欢送关注、点赞、珍藏,你们的反对是我创作的能源,感激大家。
如果文章写的有问题,请不要悭吝,欢送留言指出,我会及时核查批改。
如果你还想更加深刻的理解我,能够微信搜寻「Java旅途」进行关注。回复「1024」即可取得学习视频及精美电子书。每天7:30准时推送技术文章,让你的下班路不在孤单,而且每月还有送书流动,助你晋升硬实力!