SwaggerConfiguration.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. //package com.malk.config.swagger3;
  2. //
  3. //import io.swagger.annotations.ApiOperation;
  4. //import io.swagger.models.auth.In;
  5. //import org.apache.commons.lang3.reflect.FieldUtils;
  6. //import org.springframework.boot.SpringBootVersion;
  7. //import org.springframework.context.annotation.Bean;
  8. //import org.springframework.context.annotation.Configuration;
  9. //import org.springframework.context.annotation.Profile;
  10. //import org.springframework.util.ReflectionUtils;
  11. //import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
  12. //import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
  13. //import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  14. //import springfox.documentation.RequestHandler;
  15. //import springfox.documentation.builders.ApiInfoBuilder;
  16. //import springfox.documentation.builders.PathSelectors;
  17. //import springfox.documentation.builders.RequestHandlerSelectors;
  18. //import springfox.documentation.oas.annotations.EnableOpenApi;
  19. //import springfox.documentation.service.*;
  20. //import springfox.documentation.spi.DocumentationType;
  21. //import springfox.documentation.spi.service.contexts.SecurityContext;
  22. //import springfox.documentation.spring.web.plugins.Docket;
  23. //
  24. //import java.lang.reflect.Field;
  25. //import java.util.*;
  26. //import java.util.function.Predicate;
  27. //
  28. ///**
  29. // * swagger3 加载 UI, 添加全局 path
  30. // * -
  31. // * 路径: http://localhost:9001/dev/swagger-ui/index.html#/
  32. // */
  33. //@Profile({"dev", "local"})
  34. //@Configuration
  35. //@EnableOpenApi
  36. //public class SwaggerConfiguration implements WebMvcConfigurer {
  37. //
  38. // private final SwaggerProperties swaggerProperties;
  39. //
  40. // public SwaggerConfiguration(SwaggerProperties swaggerProperties) {
  41. // this.swaggerProperties = swaggerProperties;
  42. // }
  43. //
  44. // /// api bean ///
  45. // private Docket _restApi(Predicate<RequestHandler> apis, Predicate<String> paths) {
  46. // return new Docket(DocumentationType.OAS_30)
  47. // .enable(swaggerProperties.getEnable()) // 定义是否开启swagger,false为关闭,可以通过变量控制
  48. // .apiInfo(apiInfo()) // 将api的元信息设置为包含在json ResourceListing响应中。
  49. // .host(swaggerProperties.getTryHost()) // 接口调试地址
  50. // .select() // 选择哪些接口作为swagger的doc发布
  51. // .apis(apis)
  52. // .paths(PathSelectors.regex("(?!/ApiError.*).*"))
  53. // .paths(paths)
  54. // .build()
  55. // .protocols(newHashSet("https", "http")) // 支持的通讯协议集合
  56. // .securitySchemes(securitySchemes()) // 授权信息设置,必要的header token等认证信息
  57. // .securityContexts(securityContexts()); // 授权信息全局应用
  58. // }
  59. //
  60. // /**
  61. // * 文档说明
  62. // */
  63. // @Bean
  64. // public Docket createRestApi() {
  65. // return _restApi(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class), PathSelectors.any())
  66. // .groupName("api");
  67. // }
  68. //
  69. // /**
  70. // * 加载全部
  71. // */
  72. // @Bean
  73. // public Docket createRestDev() {
  74. // return _restApi(RequestHandlerSelectors.basePackage("com.malk"), PathSelectors.any())
  75. // .groupName("dev");
  76. // }
  77. //
  78. // /**
  79. // * API 页面头部信息
  80. // */
  81. // private ApiInfo apiInfo() {
  82. // return new ApiInfoBuilder()
  83. // .title(swaggerProperties.getApplicationName() + " Api Doc")
  84. // .description(swaggerProperties.getApplicationDescription())
  85. // .contact(new Contact("malk", "https://mc.100ali.com/", "pruple_boy@163.com"))
  86. // .version("Application Version: " + swaggerProperties.getApplicationVersion() + ", Spring Boot Version: " + SpringBootVersion.getVersion())
  87. // .build();
  88. // }
  89. //
  90. // /**
  91. // * 设置授权信息
  92. // */
  93. // private List<SecurityScheme> securitySchemes() {
  94. // ApiKey apiKey = new ApiKey("BASE_TOKEN", "token", In.HEADER.toValue());
  95. // return Collections.singletonList(apiKey);
  96. // }
  97. //
  98. // /**
  99. // * 授权信息全局应用
  100. // */
  101. // private List<SecurityContext> securityContexts() {
  102. // return Collections.singletonList(
  103. // SecurityContext.builder()
  104. // .securityReferences(Collections.singletonList(new SecurityReference("BASE_TOKEN", new AuthorizationScope[]{new AuthorizationScope("global", "")})))
  105. // .build()
  106. // );
  107. // }
  108. //
  109. // @SafeVarargs
  110. // private final <T> Set<T> newHashSet(T... ts) {
  111. // if (ts.length > 0) {
  112. // return new LinkedHashSet<>(Arrays.asList(ts));
  113. // }
  114. // return null;
  115. // }
  116. //
  117. // /**
  118. // * 通用拦截器排除swagger设置,所有拦截器都会自动加swagger相关的资源排除信息
  119. // */
  120. // @SuppressWarnings("unchecked")
  121. // @Override
  122. // public void addInterceptors(InterceptorRegistry registry) {
  123. // try {
  124. // Field registrationsField = FieldUtils.getField(InterceptorRegistry.class, "registrations", true);
  125. // List<InterceptorRegistration> registrations = (List<InterceptorRegistration>) ReflectionUtils.getField(registrationsField, registry);
  126. // if (registrations != null) {
  127. // for (InterceptorRegistration interceptorRegistration : registrations) {
  128. // interceptorRegistration
  129. // .excludePathPatterns("/swagger**/**")
  130. // .excludePathPatterns("/webjars/**")
  131. // .excludePathPatterns("/v3/**")
  132. // .excludePathPatterns("/doc.html");
  133. // }
  134. // }
  135. // } catch (Exception e) {
  136. // e.printStackTrace();
  137. // }
  138. // }
  139. //}