【视频&交流平台】

à 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

可以看到:

206. Spring Boot 2.0 Swagger2:使用_Spring Boot

206. Spring Boot 2.0 Swagger2:使用_Spring Boot_02

206. Spring Boot 2.0 Swagger2:使用_Spring Boot_03

206. Spring Boot 2.0 Swagger2:使用_Spring Boot_04