You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
4.2 KiB
113 lines
4.2 KiB
package com.ruoyi.framework.config; |
|
|
|
import java.util.ArrayList; |
|
import java.util.List; |
|
import org.springframework.beans.factory.annotation.Autowired; |
|
import org.springframework.context.annotation.Bean; |
|
import org.springframework.context.annotation.Configuration; |
|
import io.swagger.annotations.ApiOperation; |
|
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.spi.DocumentationType; |
|
import springfox.documentation.spi.service.contexts.SecurityContext; |
|
import springfox.documentation.spring.web.plugins.Docket; |
|
import springfox.documentation.swagger2.annotations.EnableSwagger2; |
|
|
|
/** |
|
* Swagger2的接口配置 |
|
* |
|
* @author ruoyi |
|
*/ |
|
@Configuration |
|
@EnableSwagger2 |
|
public class SwaggerConfig |
|
{ |
|
/** 系统基础配置 */ |
|
@Autowired |
|
private RuoYiConfig ruoyiConfig; |
|
|
|
/** |
|
* 创建API |
|
*/ |
|
@Bean |
|
public Docket createRestApi() |
|
{ |
|
return new Docket(DocumentationType.SWAGGER_2) |
|
.pathMapping("/dev-api") |
|
// 用来创建该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()); |
|
} |
|
|
|
/** |
|
* 安全模式,这里指定token通过Authorization头请求头传递 |
|
*/ |
|
private List<ApiKey> securitySchemes() |
|
{ |
|
List<ApiKey> apiKeyList = new ArrayList<ApiKey>(); |
|
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; |
|
} |
|
|
|
/** |
|
* 添加摘要信息 |
|
*/ |
|
private ApiInfo apiInfo() |
|
{ |
|
// 用ApiInfoBuilder进行定制 |
|
return new ApiInfoBuilder() |
|
// 设置标题 |
|
.title("标题:若依管理系统_接口文档") |
|
// 描述 |
|
.description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") |
|
// 作者信息 |
|
.contact(new Contact(ruoyiConfig.getName(), null, null)) |
|
// 版本 |
|
.version("版本号:" + ruoyiConfig.getVersion()) |
|
.build(); |
|
} |
|
}
|
|
|