| package com.ruoyi.web.core.config; | 
|   | 
| import java.util.ArrayList; | 
| import java.util.List; | 
| import org.springframework.beans.factory.annotation.Autowired; | 
| import org.springframework.beans.factory.annotation.Value; | 
| import org.springframework.context.annotation.Bean; | 
| import org.springframework.context.annotation.Configuration; | 
| import com.ruoyi.common.config.RuoYiConfig; | 
| import io.swagger.annotations.ApiOperation; | 
| import io.swagger.models.auth.In; | 
| import springfox.documentation.builders.ApiInfoBuilder; | 
| import springfox.documentation.builders.PathSelectors; | 
| import springfox.documentation.builders.RequestHandlerSelectors; | 
| import springfox.documentation.service.ApiInfo; | 
| import springfox.documentation.service.ApiKey; | 
| import springfox.documentation.service.AuthorizationScope; | 
| import springfox.documentation.service.Contact; | 
| import springfox.documentation.service.SecurityReference; | 
| import springfox.documentation.service.SecurityScheme; | 
| import springfox.documentation.spi.DocumentationType; | 
| import springfox.documentation.spi.service.contexts.SecurityContext; | 
| import springfox.documentation.spring.web.plugins.Docket; | 
|   | 
| /** | 
|  * Swagger2的接口配置 | 
|  *  | 
|  * @author ruoyi | 
|  */ | 
| @Configuration | 
| public class SwaggerConfig | 
| { | 
|     /** 系统基础配置 */ | 
|     @Autowired | 
|     private RuoYiConfig ruoyiConfig; | 
|   | 
|     /** 是否开启swagger */ | 
|     @Value("${swagger.enabled}") | 
|     private boolean enabled; | 
|   | 
|     /** 设置请求的统一前缀 */ | 
|     @Value("${swagger.pathMapping}") | 
|     private String pathMapping; | 
|   | 
|     /** | 
|      * 创建API | 
|      */ | 
|     @Bean | 
|     public Docket createRestApi() | 
|     { | 
|         return new Docket(DocumentationType.OAS_30) | 
|                 // 是否启用Swagger | 
|                 .enable(enabled) | 
|                 // 用来创建该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()) | 
|                 .pathMapping(pathMapping); | 
|     } | 
|   | 
|     /** | 
|      * 安全模式,这里指定token通过Authorization头请求头传递 | 
|      */ | 
|     private List<SecurityScheme> securitySchemes() | 
|     { | 
|         List<SecurityScheme> apiKeyList = new ArrayList<SecurityScheme>(); | 
|         apiKeyList.add(new ApiKey("Authorization", "Authorization", In.HEADER.toValue())); | 
|         return apiKeyList; | 
|     } | 
|   | 
|     /** | 
|      * 安全上下文 | 
|      */ | 
|     private List<SecurityContext> securityContexts() | 
|     { | 
|         List<SecurityContext> securityContexts = new ArrayList<>(); | 
|         securityContexts.add( | 
|                 SecurityContext.builder() | 
|                         .securityReferences(defaultAuth()) | 
|                         .operationSelector(o -> o.requestMappingPattern().matches("/.*")) | 
|                         .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; | 
|     } | 
|   | 
|     /** | 
|      * 添加摘要信息 | 
|      */ | 
|     private ApiInfo apiInfo() | 
|     { | 
|         // 用ApiInfoBuilder进行定制 | 
|         return new ApiInfoBuilder() | 
|                 // 设置标题 | 
|                 .title("标题:海诊通管理系统_接口文档") | 
|                 // 描述 | 
|                 .description("海诊通接口文档") | 
|                 // 作者信息 | 
|                 .contact(new Contact(ruoyiConfig.getName(), null, null)) | 
|                 // 版本 | 
|                 .version("版本号:" + ruoyiConfig.getVersion()) | 
|                 .build(); | 
|     } | 
| } |