关于springboot:springbootroute六整合JApiDocs生成接口文档

40次阅读

共计 2977 个字符,预计需要花费 8 分钟才能阅读完成。

上一篇文章中介绍了应用 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

github:https://github.com/binzh303/s…

点关注、不迷路

如果感觉文章不错,欢送 关注 点赞 珍藏,你们的反对是我创作的能源,感激大家。

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

如果你还想更加深刻的理解我,能够微信搜寻「Java 旅途」进行关注。回复「1024」即可取得学习视频及精美电子书。每天 7:30 准时推送技术文章,让你的下班路不在孤单,而且每月还有送书流动,助你晋升硬实力!

正文完
 0