Swagger2Config.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package com.redxun.config;
  2. import com.google.common.base.Predicates;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import springfox.documentation.builders.ApiInfoBuilder;
  6. import springfox.documentation.builders.PathSelectors;
  7. import springfox.documentation.service.*;
  8. import springfox.documentation.spi.DocumentationType;
  9. import springfox.documentation.spi.service.contexts.SecurityContext;
  10. import springfox.documentation.spring.web.plugins.Docket;
  11. import springfox.documentation.swagger2.annotations.EnableSwagger2;
  12. import java.util.ArrayList;
  13. import java.util.Arrays;
  14. import java.util.List;
  15. /**
  16. * 文件名: Swagger2Config
  17. * 作者: Zizg
  18. * 时间: 2023/01/06
  19. * 描述: 接口文档配置
  20. * 修改人:
  21. * 修改时间:
  22. * 修改内容:
  23. */
  24. @Configuration
  25. @EnableSwagger2
  26. public class Swagger2Config {
  27. @Bean
  28. public Docket knowledgeApiConfig(){
  29. return new Docket(DocumentationType.SWAGGER_2)
  30. .groupName("知识管理系统(里程碑1)")
  31. .apiInfo(knowledgeApiInfo())
  32. .select()
  33. //只显示admin路径下的页面
  34. .paths(Predicates.and(PathSelectors.regex("/api-knowledge/knowledge/.*")))
  35. .build()
  36. .securityContexts(Arrays.asList(securityContexts()))
  37. .securitySchemes(unifiedAuth());
  38. }
  39. @Bean
  40. public Docket knowledgeTwoApiConfig(){
  41. return new Docket(DocumentationType.SWAGGER_2)
  42. .groupName("知识管理系统(里程碑2地图)")
  43. .apiInfo(knowledgeApiInfo())
  44. .select()
  45. //只显示admin路径下的页面
  46. .paths(Predicates.and(PathSelectors.regex("/api-knowledge/map/.*")))
  47. .build()
  48. .securityContexts(Arrays.asList(securityContexts()))
  49. .securitySchemes(unifiedAuth());
  50. }
  51. @Bean
  52. public Docket knowledgeTwoApiConfig2(){
  53. return new Docket(DocumentationType.SWAGGER_2)
  54. .groupName("知识管理系统(里程碑2专辑)")
  55. .apiInfo(knowledgeApiInfo())
  56. .select()
  57. //只显示admin路径下的页面
  58. .paths(Predicates.and(PathSelectors.regex("/api-knowledge/album/.*")))
  59. .build()
  60. .securityContexts(Arrays.asList(securityContexts()))
  61. .securitySchemes(unifiedAuth());
  62. }
  63. @Bean
  64. public Docket searchApiConfig(){
  65. return new Docket(DocumentationType.SWAGGER_2)
  66. .groupName("搜索服务平台")
  67. .apiInfo(knowledgeApiInfo())
  68. .select()
  69. //只显示admin路径下的页面
  70. .paths(Predicates.and(PathSelectors.regex("/api-knowledge/search/.*")))
  71. .build()
  72. .securityContexts(Arrays.asList(securityContexts()))
  73. .securitySchemes(unifiedAuth());
  74. }
  75. private ApiInfo knowledgeApiInfo(){
  76. return new ApiInfoBuilder()
  77. .title("知识管理系统-API文档")
  78. .description("本文档描述了知识管理系统接口定义")
  79. .version("1.0")
  80. .contact(new Contact("Zizg", "", ""))
  81. .build();
  82. }
  83. // 添加配置全局token
  84. private static List<ApiKey> unifiedAuth() {
  85. List<ApiKey> arrayList = new ArrayList<>();
  86. arrayList.add(new ApiKey("token", "token", "header"));
  87. return arrayList;
  88. }
  89. private SecurityContext securityContexts() {
  90. return SecurityContext.builder()
  91. .securityReferences(defaultAuth())
  92. .forPaths(PathSelectors.any())
  93. .build();
  94. }
  95. private List<SecurityReference> defaultAuth() {
  96. AuthorizationScope authorizationScope = new AuthorizationScope("global", "全局token");
  97. AuthorizationScope[] authorizationScopes = new AuthorizationScope[1];
  98. authorizationScopes[0] = authorizationScope;
  99. return Arrays.asList(new SecurityReference("token", authorizationScopes));
  100. }
  101. }