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

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

下面咱们一块儿来看看如何使用!前端

1、添加依赖

<dependency>
  <groupId>io.github.yedaxia</groupId>
  <artifactId>japidocs</artifactId>
  <version>1.3</version>
</dependency>

2、配置生成参数

咱们新建一个项目,而后随便写一个main方法,增长生成文档的配置,而后运行main方法。java

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); // 执行生成文档

3、编码规范

因为JApiDocs是经过解析Java源码来实现的,所以若是要想实现想要的文档,仍是须要遵循必定的规范。git

3.1 类注释、方法注释和属性注释

若是咱们想生成类的注释,咱们能够直接在类上加注释,也能够经过加@description来生成。github

/**
 * 用户接口类
 */
@RequestMapping("/api/user")
@RestController
public class UserController {}

/**
 * @author Java旅途
 * @Description 用户接口类
 * @Date 2020-06-15 21:46
 */
@RequestMapping("/api/user")
@RestController
public class UserController {}

若是咱们想生成方法的注释,只能直接加注释,不能经过加@description来生成。redis

/**
 * 查询用户
 * @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能够自动生成实体类,关于实体类属性的注释有三种方式,生成的效果都是同样的,以下:spring

/**
 * 用户名称
 */
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注解来获取参数,在参数后面添加注释,示例以下:json

/**
  * @param age 年龄
  */
@GetMapping("/list")
public R<User> list(@RequestParam int age){
    User user = new User("Java旅途", 18);
    return R.ok(user);
}

生成的文档效果以下:api

请求参数

参数名 类型 必须 描述
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、高级配置

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

5、总结

JApiDocs就介绍到这里了,优点劣势你们很容易就看出来了。几乎不须要注释便可生成接口文档,仅有的几个注释咱们也能够经过ide来自动生成。可是JApiDocs不具有Swagger在线调试功能。若是有一天JApiDocs支持在线调试后,那时候确定会有一大波追随者,毕竟写代码的谁喜欢写多余的注解!


本文示例代码已上传至github,点个star支持一下!

Spring Boot系列教程目录

spring-boot-route(一)Controller接收参数的几种方式

spring-boot-route(二)读取配置文件的几种方式

spring-boot-route(三)实现多文件上传

spring-boot-route(四)全局异常处理

spring-boot-route(五)整合Swagger生成接口文档

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

spring-boot-route(七)整合jdbcTemplate操做数据库

spring-boot-route(八)整合mybatis操做数据库

spring-boot-route(九)整合JPA操做数据库

spring-boot-route(十)多数据源切换

spring-boot-route(十一)数据库配置信息加密

spring-boot-route(十二)整合redis作为缓存

spring-boot-route(十三)整合RabbitMQ

spring-boot-route(十四)整合Kafka

spring-boot-route(十五)整合RocketMQ

spring-boot-route(十六)使用logback生产日志文件

spring-boot-route(十七)使用aop记录操做日志

spring-boot-route(十八)spring-boot-adtuator监控应用

spring-boot-route(十九)spring-boot-admin监控服务

spring-boot-route(二十)Spring Task实现简单定时任务

spring-boot-route(二十一)quartz实现动态定时任务

spring-boot-route(二十二)实现邮件发送功能

spring-boot-route(二十三)开发微信公众号

这个系列的文章都是工做中频繁用到的知识,学完这个系列,应付平常开发绰绰有余。若是还想了解其余内容,扫面下方二维码告诉我,我会进一步完善这个系列的文章!

相关文章
相关标签/搜索