1. 环境

– spring boot版本:2.7.4

– spring swagger版本:3.0.0

– java版本:8

2. 具体操作

2.1 引入spring swagger的依赖

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
        </dependency>

这是spring swagger 3.0版本的依赖,里面整合了spring-swagger2和spring-swagger-ui的依赖。如果要使用低于3.0版本的,可以单独引入这两个依赖:

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>版本号</version>
        </dependency>
	<!--这个依赖主要是看swagger-ui界面的依赖-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>版本号</version>
        </dependency>

2.2 配置swagger

package com.mcj.music.config;

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.oas.annotations.EnableOpenApi;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * @author mcj
 * @date 2022/10/15 13:18
 * @email 2037612492@qq.com
 * @description swagger配置类
 */
@Configuration
@EnableOpenApi  // 开启swagger功能   swagger3.0.0版本以前使用@EnableSwagger2开启  注意:这个注解是springfox-boot-starter依赖中的注解,如果不存在的话请引入这个依赖
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())   // 配置文档的信息
                .enable(true)        // 是否开启,true开启,false隐藏,生产环境最好隐藏
                .select()           // 通过.select()方法,去配置扫描接口,RequestHandlerSelectors配置如何扫描接口
                .apis(RequestHandlerSelectors.basePackage("com.mcj.music.controller"))   // 扫描的路径包,也就是会生成接口文档的包路径,设置basePackage会将包下的所有被@Api标记类的所有方法作为api
                .paths(PathSelectors.any()) // 指定路径处理,也就是会生成接口文档的路径,PathSelectors.any()代表所有的路径
                .build();

    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("音乐网站")                  // 设置文档标题
                .description("接口描述")            // 文档描述
                .termsOfServiceUrl("http://localhost:8888")          // 服务条款URL
                .version("V0.0.0")                 // 版本号
                .build();
    }
}

2.3 swagger常用注解的使用

@Api注解的使用

@Api注解用于标注一个Controller,一般在默认情况下Swagger-core只会扫描解析标有@Api注解的类,从而忽略其他资源的类
image
@Api注解常用的一些属性

属性 描述
value 描述类的作用
tags 说明该类的作用,非空时将覆盖value的值
hidden 默认为false, 配置为true 将在文档中隐藏,这个也不常用

@ApiOperation注解的使用

@ApiOperation主要是用在请求的方法上,说明方法的用途、作用
image
@ApiOperation常用的一些属性

属性 描述
value 说明方法的用途、作用
notes 方法的备注
tags 操作标签,非空时将覆盖value的值
httpMethod 指定HTTP方法,”GET”,”HEAD”,”POST”,”PUT”,”DELETE”
response 返回对象

@ApiModel注解的使用

@ApiModel主要用在字段的实体类上,对实体类进行个描述
image

@ApiModelProperty

@ApiModelProperty主要用在实体类中的字段上,对其属性进行描述
image
@ApiModelProperty常用的一些属性

属性 描述
value 该字段的简要说明。
name 允许覆盖属性名称
dataType 参数的数据类型。可以是类名或者参数名,会覆盖类的属性名称。
required 参数是否必传,默认为false
example 对该字段举个例子

@ApiImplicitParams与@ApiImplicitParam

它们两个都是作用在方法上用来设置参数,不过不同的是@ApiImplicitParams可以包含多个@ApiImplicitParam用来设置多个参数,而@ApiImplicitParam仅仅只是用来设置一个参数。
image
@ApiImplicitParam注解的一些常用属性

属性 描述
name 参数名
value 参数的具体意义,作用
required 参数是否必填
dataType 参数的数据类型
paramType 查询参数类型

2.4 访问swagger接口文档
接口文档的地址为http://localhost:8888/swagger-ui/index.html,前面的地址是你项目的地址,这个是swagger 3.0.0版本的访问地址,如果是低版本的访问地址则是http://localhost:8888/swagger-ui.html
image

3. 问题

3.1 问题:项目启动时控制台报错
image
原因:这是因为Springboot2.6以后将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser,导致出错
解决:

  • 在配置文件application.properties中添加下面的语句将其路径改回即可
spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER
  • 将spring boot版本降低到2.6版本以下

3.2 问题:打开spring swagger-ui页面报错
image
原因:这边是我使用@ApiImplicitParams与@ApiImplicitParam注解时参数的名称写的有问题
解决:修改@ApiImplicitParam注解里面的name名成就行了

4. 小结

4.1 开启swagger的注解3.0版本与以前的版本是不一样的,需要注意一下,3.0版本是使用@EnableOpenApi,而之前的版本则是使用@EnableSwagger2注解
4.2 由于swagger 3.0版本把swagger-ui的前端html页面位置换了,所以在访问的时候记得要换访问路径

原文地址:http://www.cnblogs.com/mcj123/p/16794647.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性