SpringBoot基础之集成接口文档生成

这是我参与11月更文挑战的第6天,活动详情查看:2021最后一次更文挑战

前言

在平时的多人开发过程中,正确的使用优秀的接口文档,可以减少大量的沟通成本,也可以让前后端更有效率的并行开发,更可以让后来者或者维护者更好更快的上手业务.
使用文档比无文档的项目更容易开发,更容易维护.
使用接口文档生成的接口文档,比第三方维护的文档更方便也更轻松,文档也和代码也更一致.

(一) 文档生成工具swagger

swagger是一个能直接生成接口文档,并能进行接口的是的工具.

(1)引入swagger依赖

1
2
3
4
5
6
7
8
9
10
11
12
xml复制代码<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>

<!-- 默认样式 访问地址: /swagger-ui.html -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>

其中springfox-swagger2是swagger的主程序,负责将接口整理成restful形式的数据.
springfox-swagger-ui是默认的swagger前端界面样式包,默认的访问地址是/swagger-ui.html,
此包可以换成自己喜欢的样式包,比如swagger-ui-layer

(2)springboot整合swagger

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
scss复制代码//记得注解EnableSwagger2
@EnableSwagger2
@Configuration
public class MySwagger2Config {

private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("swagger文档标题")
.description("swagger描述")
.version("1.0")
.build();
}

@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.zouzdc.controller"))
.paths(PathSelectors.any())
.build();
}

}

(3)使用swagger注解 注释代码

在然后,在方法和参数上使用@ApiParam,@ApiImplicitParams,@ApiOperation注解参数和接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
less复制代码@ApiOperation(value="多个参数的例子", notes="两个参数的swagger例子,入参一个必填另个非必填")
@ApiImplicitParams({
@ApiImplicitParam(name = "one",value = "姓名" ,required = true),
@ApiImplicitParam(name = "two",value = "年龄")
})
@GetMapping("/moreParams")
public R moreParams(String one,String two){
return R.success("one",one,"two",two);
}


@ApiOperation(value="传入一个对象", notes="传入对象并解释字段含义")
@GetMapping("/dto")
public R tdtoime(StudentSimpleDto dto){
return R.success(dto);
}

StudentSimpleDto.java 对象

1
2
3
4
5
6
7
8
9
10
11
12
13
kotlin复制代码@Data
public class StudentSimpleDto {

@ApiParam("id")
private Long id;

@ApiParam("姓名")
private String name;

@ApiParam("年龄")
private Integer age;

}

(4)使用

启动项目,然后访问/swagger-ui.html,即可看到swagger界面了

(二) 文档生成工具JApiDocs

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档自动生成工具(也可以有注解)

(1)引入JApiDocs依赖

1
2
3
4
5
xml复制代码<dependency>
<groupId>io.github.yedaxia</groupId>
<artifactId>japidocs</artifactId>
<version>1.4.4</version>
</dependency>

(2)正常写javaDoc注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typescript复制代码 /**
* 两个参数的swagger例子,两个参数
* @param one 第一个参数注释
* @param two 第二个参数注释
* @return
*/
@GetMapping("/moreParams")
public R moreParams(String one,String two){
return R.success("one",one,"two",two);
}

/**
* 传入一个对象,传入对象并解释字段含义
* @param StudentSimpleDto 对象参数
* @return
*/
@GetMapping("/dto")
public R tdtoime(StudentSimpleDto dto){
return R.success(dto);
}

StudentSimpleDto.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ruby复制代码@Data
public class StudentSimpleDto {
/**
* id
*/
private Long id;

/**
* 姓名
*/
private String name;

/**
* 年龄
*/
private Integer age;
}

(3)使用

在测试类中运行main方法,生成html离线文档,在本地运行项目时可以直接当方法写在springboot的启动类中

1
2
3
4
5
6
7
8
9
arduino复制代码public static void main(String[] args) {
DocsConfig config = new DocsConfig();
config.setProjectPath("D:\\workSpace\\idea\\sbtest1"); // root project path
config.setProjectName("项目名称"); // project name
config.setApiVersion("V1.0"); // api version
config.setDocsPath("D:\\workSpace\\idea\\sbtest1\\apidoc"); // api docs target path
config.setAutoGenerate(Boolean.TRUE); // auto generate
Docs.buildHtmlDocs(config); // execute to generate
}

其中setProjectPath是项目根目录,setDocsPath是文档的生成目录

(三) swagger和JApiDocs对比

swagger解释基本能用的文档,就必须使用注解,必须侵入正常的业务代码

JApiDocs解释基本能用的文档,使用的是javadoc无需写注解,无需侵入代码,javadoc越规范,文档越清晰,但是使用更多的功能则也需要注解

swagger是直接运行直接生成在线的文档,项目启动即api启动

JApiDocs是基于源码生成的离线文档,需要后端控制生成.

1
2
3
4
arduino复制代码    作者:ZOUZDC
链接:https://juejin.cn/post/7028963866063306760
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%