swagger-bootstrap-ui使用,接口文档输出 指定环境@Profile及No operations defined in spec处理,@Api中文展示controller名称

/**
 * @author Be.insighted
 * @Description swaggerui
 * @since 2020/08/10
 */
@EnableSwagger2
@Configuration
@EnableSwaggerBootstrapUI
public class BaseSwagger {

    @Autowired
    private Environment env;

    @Bean
    public Docket createRestApi() {
        String packagePath = env.getProperty("swagger.package");
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo())
                        // 扫描的路径,Controller所在的包
                        .select().apis(RequestHandlerSelectors.basePackage(packagePath)) 
                        .paths(PathSelectors.any()) // PathSelectors.ant("URL Pattern")
                        .build();
    }

    private ApiInfo apiInfo() {
        String title = env.getProperty("swagger.title");
        String description = env.getProperty("swagger.description");
        String version = env.getProperty("swagger.version");
        return new ApiInfoBuilder().title(title).description(description).version(version).build();
    }
}

pom.xml中引入依赖

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>${swagger.version}</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>${swagger-ui.version}</version>
</dependency>
<dependency> 
    <groupId>com.github.xiaoymin</groupId> 
    <artifactId>swagger-bootstrap-ui</artifactId> 
    <version>1.9.6</version> 
</dependency>

application.yml

使用时直接在浏览器中输入:http://host:port/swagger-ui.html

或者http://host:port/doc.html

 在文档管理中直接打开协议文档!!!点击拷贝文档在别处处理即可!要先改代码里的描述,再从文档拷贝,以免手工操作时发生错误。

 

方法一:禁用(指定环境下生效,指定配置文件)加上注解@Profile({"dev","test"})与@Configuration一起使用

指定后

方法二:配置文件中swagger.enable = false、然后配置类加上注解

@ConditionalOnProperty(name = "swagger.enable", havingValue = "true")
# 接口文档
swagger:
  author: 作者
  title: 你的标题
  package: controller层所在的文件夹路径,需是.而不是斜杠/ #API扫包
  version: 1.0
  description: 描述
  enable: 是否开启

 在下面的类上加上注解@EnableSwaggerBootstrapUI即可!

效果:

No operations defined in spec!

处理: 配置文件中的package需是controller所在的路径,将斜杠/换成.即可!

swagger一些常用注解
         @Api:用在类上,说明该类的作用


         @ApiOperation:用在方法上,说明方法的作用
         @ApiIgnore:使用该注解忽略这个API
         @ApiImplicitParams:用在方法上包含一组参数说明
         @ApiImplicitParam:用在@ApiImplicitParams注解中,指定一个请求参数的各个方面
            paramType:参数放在哪个地方
                 header-->请求参数的获取:@RequestHeader
                 query-->请求参数的获取:@RequestParam
                 path(用于restful接口)-->请求参数的获取:@PathVariable
                 body(不常用)
                 form(不常用)
             name:参数名
             dataType:参数类型
             required:参数是否必须传
             value:参数的意思
             defaultValue:参数的默认值
         @ApiResponses:用于表示一组响应
         @ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
             code:数字,例如400
             message:信息,例如"请求参数没填好"
             response:抛出异常的类
         @ApiModel:描述一个Model的信息(这种一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候)
            @ApiModelProperty:描述一个model的属性 

 

 

 

坑:引入 swagger-bootstrap-ui后,@ApiModelProperty,需将子标签required显示指为true,否则文档里会是否必须填充的是false!

记不住访问url怎么破?重定向!

@RestController
@RequestMapping("/tool/swagger")
public class SwaggerController extends BaseController {
    
    @GetMapping("/tool/swagger")
    public String index() {
        return redirect("/swagger-ui.html");
    }

    @GetMapping("/tool/doc")
    public String indexDoc() {
        return redirect("/doc.html");
    }
}


版权声明:本文为Be_insighted原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。