springboot集成Swagger2

Posted 灬小乙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springboot集成Swagger2相关的知识,希望对你有一定的参考价值。

1.Swagger简介

  Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

2.Spring Boot 集成Swagger

一、修改pom.xml,添加maven依赖

        <!-- Swagger -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.6.1</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.6.1</version>
        </dependency>

二、添加Swagger配置类

@Configuration
@EnableSwagger2
public class SwaggerConfig {
    
    @Bean
    public Docket createRestApi() {        
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("指定扫描的包路径"))
                .paths(PathSelectors.any())                  
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("大标题")
                .description("description")
                .termsOfServiceUrl("http://路径.com")
                .contact(new Contact("name", "http://name.com", "name@name.com"))//作者
                .version("1.0")//版本
                .build();
    }
    
    @SuppressWarnings("unused")
    private Predicate<String> petstorePaths() {
        return or(
                regex("/user.*"),
                regex("/cities.*")
        );
    }

}

  @Configuration让Spring来加载该类配置

  @EnableSwagger2启用Swagger2

  通过createRestApi函数创建Docket的Bean之后,apiInfo()用来创建该Api的基本信息(这些基本信息会展现在文档页面中)。select()函数返回一个ApiSelectorBuilder实例用来控制哪些接口暴露给Swagger来展现,本例采用指定扫描的包路径来定义,Swagger会扫描该包下所有Controller定义的API,并产生文档内容(除了被@ApiIgnore指定的请求)

3.添加文档内容

  在API上做一些声明:在Controller类中添加相关的swagger注解。但是有一个要求,这个Controller类一定要让上一步配置类的@ComponentScan扫描到

  swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

  swagger注释API详细说明

 

作用范围API使用位置
对象属性 @ApiModelProperty 用在出入参数对象的字段上
协议集描述 @Api 用于controller类上
协议描述 @ApiOperation 用在controller的方法上
Response集 @ApiResponses 用在controller的方法上
Response @ApiResponse 用在 @ApiResponses里边
非对象参数集 @ApiImplicitParams 用在controller的方法上
非对象参数描述 @ApiImplicitParam 用在@ApiImplicitParams的方法里边
描述返回对象的意义 @ApiModel 用在返回对象类上

 

@Api:修饰整个类,描述Controller的作用
@ApiOperation:描述一个类的一个方法,或者说一个接口
@ApiParam:单个参数描述
@ApiModel:用对象来接收参数
@ApiProperty:用对象接收参数时,描述对象的一个字段
@ApiResponse:HTTP响应其中1个描述
@ApiResponses:HTTP响应整体描述
@ApiIgnore:使用该注解忽略这个API
@ApiError :发生错误返回的信息
@ApiParamImplicitL:一个请求参数
@ApiParamsImplicit 多个请求参数
@Api(tags={"积分接口"})
@RequestMapping("credit")
@RestController
public class CreidtController {

    @Autowired
    private CreditService creditService;
    
    @Autowired  
    private ConsulClient consulClient;
        
    private static Logger log = LoggerFactory.getLogger(CreidtController.class);

    /**
     * @param id
     * @return User
     */
    @ApiOperation(value = "根据用户ID获取可用积分", notes="包含各种类型积分")   
    @ApiImplicitParam(name = "id", value = "编号", required = true, paramType="path")
    @GetMapping("{id}")
    public Credit getuser(@PathVariable String id) {
        return null;
    }      
        
}

  完成上述代码添加上,启动Spring Boot程序,访问:http://localhost:8080/swagger-ui.html

  就能看到前文所展示的RESTful API的页面。我们可以再点开具体的API请求,以POST类型的/users请求为例,可找到上述代码中我们配置的Notes信息以及参数user的描述信息。

4.API文档访问与调试

  在上图请求的页面中,我们看到user的Value是个输入框?是的,Swagger除了查看接口功能外,还提供了调试测试功能,我们可以点击上图中右侧的Model Schema(黄色区域:它指明了User的数据结构),此时Value中就有了user对象的模板,我们只需要稍适修改,点击下方“Try it out!”按钮,即可完成了一次请求调用!

 

此时,你也可以通过几个GET请求来验证之前的POST请求是否正确。

参考:https://blog.csdn.net/Amethyst128/article/details/72877660
   swagger.io

以上是关于springboot集成Swagger2的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot集成Swagger2生成API接口文档

springboot集成Swagger2

SpringBoot框架 之 Swagger2

SpringBoot集成Swagger2

SpringBoot_springboot集成swagger2

springboot 集成swagger2