Swagger的配置(注:配合资源路径一起使用)

一、导入依赖

    <!--Swagger2依赖-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger2.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger2.version}</version>
    </dependency>

二、添加配置

/**
* @Author: cws
* @Date: 13:20 2020/11/19
* @Description:
* @Version v1.0
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {

   /**
    * 创建API
    */
   @Bean
   public Docket createRestApi() {
       return new Docket(DocumentationType.SWAGGER_2)
               // 用来创建该API的基本信息,展示在文档的页面中(自定义展示的信息)
               .apiInfo(apiInfo())
               // 设置哪些接口暴露给Swagger展示
               .select()
               // 扫描所有有注解的api,用这种方式更灵活
               .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
               // 扫描指定包中的swagger注解
               // .apis(RequestHandlerSelectors.basePackage("com.ruoyi.project.tool.swagger"))
               // 扫描所有 .apis(RequestHandlerSelectors.any())
               .paths(PathSelectors.any())
               .build()
               /* 设置安全模式,swagger可以设置访问token */
               .securitySchemes(securitySchemes())
               .securityContexts(securityContexts());
   }

   /**
    * 添加摘要信息
    */
   private ApiInfo apiInfo() {
       // 用ApiInfoBuilder进行定制
       return new ApiInfoBuilder()
               // 设置标题
               .title("标题:公司官网系统_接口文档")
               // 描述
               .description("描述:用于管理公司的发布信息,具体包括XXX,XXX模块...")
               // 作者信息
               .contact(new Contact("cws", null, null))
               // 版本
               .version("版本号:V.1")
               .build();
   }

   /**
    * 安全模式,这里指定token通过Authorization头请求头传递
    */
   private List<ApiKey> securitySchemes() {
       List<ApiKey> apiKeyList = new ArrayList<>();
       apiKeyList.add(new ApiKey("Authorization", "Authorization", "header"));
       return apiKeyList;
   }

   /**
    * 安全上下文
    */
   private List<SecurityContext> securityContexts() {
       List<SecurityContext> securityContexts = new ArrayList<>();
       securityContexts.add(
               SecurityContext.builder()
                       .securityReferences(defaultAuth())
                       .forPaths(PathSelectors.regex("^(?!auth).*$"))
                       .build());
       return securityContexts;
   }

   /**
    * 默认的安全上引用
    */
   private List<SecurityReference> defaultAuth() {
       AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything");
       AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
       authorizationScopes[0] = authorizationScope;
       List<SecurityReference> securityReferences = new ArrayList<>();
       securityReferences.add(new SecurityReference("Authorization", authorizationScopes));
       return securityReferences;
   }
} ```
posted @ 2020-11-20 23:47  白描先生  阅读(2147)  评论(0编辑  收藏  举报
}); });