上一篇文章中介绍了使用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准时推送技术文章,让你的上班路不在孤独,而且每月还有送书活动,助你提升硬实力!

spring-boot-route(六)整合JApiDocs生成接口文档的更多相关文章

  1. SpringBoot整合Swagger3生成接口文档

    前后端分离的项目,接口文档的存在十分重要.与手动编写接口文档不同,swagger是一个自动生成接口文档的工具,在需求不断变更的环境下,手动编写文档的效率实在太低.与swagger2相比新版的swagg ...

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

    目前,大多数公司都采用了前后端分离的开发模式,为了解决前后端人员的沟通问题,后端人员在开发接口的时候会选择使用swagger2来生成对应的接口文档,swagger2提供了强大的页面调试功能,这样可以有 ...

  3. Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 问题二 ...

  4. Spring boot 添加日志 和 生成接口文档

    <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...

  5. Spring Boot Swagger2自动生成接口文档

    一.简介 在当下这个前后端分离的技术趋势下,前端工程师过度依赖后端工程师的接口和数据,给开发带来了两大问题: 1.问题一.后端接口查看难:要怎么调用?参数怎么传递?有几个参数?参数都代表什么含义? 2 ...

  6. Java | Spring Boot Swagger2 集成REST ful API 生成接口文档

      Spring Boot Swagger2 集成REST ful API 生成接口文档 原文 简介 由于Spring Boot 的特性,用来开发 REST ful 变得非常容易,并且结合 Swagg ...

  7. JApiDocs(自动生成接口文档神器)

    JApiDocs教程 前言 作为一名优秀的程序员来说,由于涉及到要与前端进行对接,所以避免不了的就是写接口文档.写完接口文档,一旦代码返回结果,参数等出现变动,接口文档还得随之改动,十分麻烦,违背了我 ...

  8. .net core 使用swagger自动生成接口文档

     前言 swagger是一个api文档自动生动工具,还集成了在线调试. 可以为项目自动生成接口文档, 非常的方便快捷 Swashbuckle.AspNetCore 是一个开源项目,用于生成 ASP.N ...

  9. Springboot集成swagger2生成接口文档

    [转载请注明]: 原文出处:https://www.cnblogs.com/jstarseven/p/11509884.html    作者:jstarseven    码字挺辛苦的.....   一 ...

随机推荐

  1. 单元测试与单元测试框架 Jest

    什么是单元测试? 测试是一种验证我们的代码是否可以按预期工作的手段. 被测试的对象可以是我们程序的任何一个组成部分.大到一个分为多步骤的下单流程,小到代码中的一个函数. 单元测试特指被测试对象为程序中 ...

  2. webpack 打包的具体步骤

    webpack打包的方法: 方法一 创建一个src文件夹(存放自己的代码),dist文件夹(打包到此文件夹) 2编写自己的代码,在src文件夹中创建一个主模块main.js和若干个js文件,将模块js ...

  3. CPU有个禁区,内核权限也无法进入!

    神秘项目 我是CPU一号车间的阿Q,是的,我又来了. 最近一段时间,我几次下班约隔壁二号车间虎子,他都推脱没有时间,不过也没看见他在忙个啥. 前几天,我又去找他,还是没看到他人,却意外地在他桌上发现了 ...

  4. Labview学习之路(十一)日常编程技巧

    此文章用于记录自己在学习Labview过程中所用到的编程技巧,会一直更新下去. (一)移动控件 直接鼠标拖动. 按住shift键,鼠标移动,可以水平和竖直移动(取决于鼠标最开始的移动方向). 使用键盘 ...

  5. Android开发必有功能,更新版本提示,检测是否有新版本更新。下载完成后进行安装。

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985,转载请说明出处. 给大家介绍个东西,MarkDown真的超级超级好用.哈哈.好了, 正题内容如下: 先 ...

  6. TextBox控件保存上次的输入

    本片文章是参考C# 怎么让winform程序中的输入文本框保留上次的输入再此表示感谢重新在这里写一遍,是为了保存一下,方便自己下次使用可以很快的找到1.设置txtBox控件的配置文件2.选择Text ...

  7. chrome设置跨域访问

    1.新建目录 /usr/local/opt/myChromData 2.输入命令行 open -n /Applications/Google\ Chrome.app/ --args --disable ...

  8. python实践项目1

    python #南昌理工学院人工智能学院实验室 WORKSHOP 实践项目 import time print('welcome to our WORKSHOP') print('.......... ...

  9. rabbitmq集成和实战

    与 Spring 集成 pom 文件 使用 Maven,这里使用的 4.3.11,所以这里引入的是 rabbit 是 2.0.0,如果兼容性的话请自行去 Spring 的官网上去查 这里补充一下,sp ...

  10. ubuntu 18.04下修改python3指向

    起因 ubuntu18.04下默认带的是python3.6,但是因为需求需要升级为python3.7 步骤 安装 sudo apt install python3.7 修改环境变量 修改默认的pyth ...