← 返回首页
SpringBoot基础教程(二十九)
发表时间:2020-11-24 09:26:23
swagger接口测试

Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。把swagger整合到SpringBoot中,可以构建强大RESTful API文档。省去接口文档管理工作,修改代码,自动更新,Swagger2也提供了强大的页面测试功能来调试RESTful API。

整合步骤:

1.添加swagger依赖

<properties>
   <swagger.version>2.9.2</swagger.version>
</properties>

<dependencies>
<!--swagger2依赖-->
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${swagger.version}</version>
        </dependency>
</dependencies>

2.在config包下添加SwaggerConfig

package com.oracle.config;

import io.swagger.annotations.ApiOperation;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfig {

    @Bean
    public Docket applicationApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(applicationInfo())
                .select()
                //swagger要扫描的包路径
                .apis(RequestHandlerSelectors.basePackage("com.oracle.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo applicationInfo() {
        return  new ApiInfoBuilder()
                .title("你的网站标题")
                .description("你的网站描述")
                .termsOfServiceUrl("localhost:8080/myblog")
                .contact(new Contact("Swagger测试","localhost:8080/myblog/swagger-ui.html","403353606@qq.com"))
                .version("1.0")
                .build();
    }
}

3.在控制器类上添加相关的swagger注解 例如:

package com.oracle.controller;

import com.oracle.entity.Catalog;
import com.oracle.json.JsonData;
import com.oracle.json.JsonResult;
import com.oracle.service.CatalogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
import java.util.Optional;


@Api("版块模块接口")
@RestController
@RequestMapping("catalog")
public class CatalogController extends BaseController {

    @Resource
    private CatalogService catalogService;

    //查询所有的版块列表
    @ApiOperation("查询所有课程版块列表")
    @GetMapping("/")
    public JsonData queryCatalogList(){

        List<Catalog> catalogList = null;
        if(redisTemplate.opsForValue().get("catalogList")==null){
            Optional<List<Catalog>> optional = catalogService.queryAllCatalogList();
            //保存到redis缓存里面
            if(optional.isPresent()) {
                catalogList = optional.get();
                redisTemplate.opsForValue().set("catalogList", catalogList);
            }else{
                return JsonResult.fail("查询课程版块列表失败!");
            }

        }
        //缓存中有,直接取。
        catalogList = (List<Catalog>) redisTemplate.opsForValue().get("catalogList");
        return JsonResult.success(catalogList,"查询课程版块列表成功!");

    }

}

4.查看swagger接口文档 浏览器输入http://localhost:8080/项目上下文/swagger-ui.html,就可以看到接口文档了。

Swagger2常用注解见下表: |注解|说明| |-|-| |@Api|修饰整个类,描述Controller的作用| |@ApiOperation|描述一个类的一个方法,或者说一个接口| |@ApiParam|单个参数描述| |@ApiModel|用对象来接收参数| |@ApiProperty|用对象接收参数时,描述对象的一个字段| |@ApiResponse|HTTP响应其中1个描述| |@ApiResponses|HTTP响应整体描述| |@ApiIgnore|使用该注解忽略这个API| |@ApiError|发生错误返回的信息| |@ApiImplicitParam|一个请求参数| |@ApiImplicitParams|多个请求参数|