【视频&交流平台】
à Spring Boot视频:http://t.cn/R3QepWG
à Spring Cloud视频:http://t.cn/R3QeRZc
à Spring Boot Shiro视频:http://t.cn/R3QDMbh
à Spring Boot交流平台:http://t.cn/R3QDhU0
à Spring Boot 2.0 SpringData和JPA视频:
http://t.cn/R1pSojf
说明
(1)Spring Boot 版本:2.0.3.RELEASE
(2)Swagger版本:2.8.0
(3)JDK:1.8
前言
在前一篇文章中花了很大的篇幅,对Swagger有了一个初步的了解,那么重要是如何在项目中进行使用。
一、在Spring Boot中集成Swagger2
1.1 新建项目,添加依赖
新建一个项目,取名为:springboot2-swagger2,然后再pom.xml添加如下依赖(以下代码支持手机左右滑动):
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.kfit</groupId>
<artifactId>springboot2-swagger2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>springboot2-swagger2</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.8.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.8.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
1.2 创建swagger的配置类
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.kfit.swagger"))
.paths(PathSelectors.any())
.build()
;
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("api文档")
.description("RESTFU接口")
.version("1.0")
.build();
}
}
说明:
(1)使用@EnableSwagger2启用Swagger;
(2)在构建Docket方法上主要是配置一些基本的信息以及要扫描的基础包路径。
1.3 编写controller进行测试
到这里基本工作就做完了,就可以编写一个测试类进行测试了:
@Controller
@RequestMapping("/api/test")
public class TestController {
@ResponseBody
@RequestMapping(value = "/show", method=RequestMethod.POST)// 这里指定RequestMethod,如果不指定Swagger会把所有RequestMethod都输出,在实际应用中,具体指定请求类型也使接口更为严谨。
@ApiOperation(value="测试接口", notes="测试接口详细描述")
public String show(
@ApiParam(required=true, name="name", value="姓名")
@RequestParam(name = "name") String stuName){
return "input name is : "+stuName;
}
}
这里使用到了Swagger提供的注解@ApiOperation和@ApiParam,常用的注解还有:
(1)@Api:用在类上,说明该类的作用
(2)@ApiOperation:用在方法上,说明方法的作用,标注在具体请求上,value和notes的作用差不多,都是对请求进行说明;tags则是对请求进行分类的,比如你有好几个controller,分别属于不同的功能模块,那这里我们就可以使用tags来区分了。
(3)@ApiImplicitParams:用在方法上包含一组参数说明
(4)@ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面。
(5)@ApiResponses:用于表示一组响应
(6)@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
(7)@ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)表明这是一个被swagger框架管理的model,用于class上
(8)@ApiModelProperty: 这里顾名思义,描述一个model的属性,就是标注在被标注了@ApiModel的class的属性上,这里的value是对字段的描述,example是取值例子,注意这里的example很有用,对于前后端开发工程师理解文档起到了关键的作用,因为会在api文档页面上显示出这些取值来;这个注解还有一些字段取值,可以自己研究,举例说一个:position,表明字段在model中的顺序
1.4 访问测试
如果成功启动之后,会有一个可以访问的地址,swagger会生成一个可视化的控制台以供我们进行操作。
(1)访问地址:
http://localhost:8080/swagger-ui.html
可以看到: