package com.redxun.config; import com.google.common.base.Predicates; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import springfox.documentation.builders.ApiInfoBuilder; import springfox.documentation.builders.PathSelectors; import springfox.documentation.service.*; 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; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 文件名: Swagger2Config * 作者: Zizg * 时间: 2023/01/06 * 描述: 接口文档配置 * 修改人: * 修改时间: * 修改内容: */ @Configuration @EnableSwagger2 public class Swagger2Config { @Bean public Docket knowledgeApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("知识管理系统(里程碑1)") .apiInfo(knowledgeApiInfo()) .select() //只显示admin路径下的页面 .paths(Predicates.and(PathSelectors.regex("/api-knowledge/knowledge/.*"))) .build() .securityContexts(Arrays.asList(securityContexts())) .securitySchemes(unifiedAuth()); } @Bean public Docket knowledgeTwoApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("知识管理系统(里程碑2地图)") .apiInfo(knowledgeApiInfo()) .select() //只显示admin路径下的页面 .paths(Predicates.and(PathSelectors.regex("/api-knowledge/map/.*"))) .build() .securityContexts(Arrays.asList(securityContexts())) .securitySchemes(unifiedAuth()); } @Bean public Docket knowledgeTwoApiConfig2(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("知识管理系统(里程碑2专辑)") .apiInfo(knowledgeApiInfo()) .select() //只显示admin路径下的页面 .paths(Predicates.and(PathSelectors.regex("/api-knowledge/album/.*"))) .build() .securityContexts(Arrays.asList(securityContexts())) .securitySchemes(unifiedAuth()); } @Bean public Docket searchApiConfig(){ return new Docket(DocumentationType.SWAGGER_2) .groupName("搜索服务平台") .apiInfo(knowledgeApiInfo()) .select() //只显示admin路径下的页面 .paths(Predicates.and(PathSelectors.regex("/api-knowledge/search/.*"))) .build() .securityContexts(Arrays.asList(securityContexts())) .securitySchemes(unifiedAuth()); } private ApiInfo knowledgeApiInfo(){ return new ApiInfoBuilder() .title("知识管理系统-API文档") .description("本文档描述了知识管理系统接口定义") .version("1.0") .contact(new Contact("Zizg", "", "")) .build(); } // 添加配置全局token private static List unifiedAuth() { List arrayList = new ArrayList<>(); arrayList.add(new ApiKey("token", "token", "header")); return arrayList; } private SecurityContext securityContexts() { return SecurityContext.builder() .securityReferences(defaultAuth()) .forPaths(PathSelectors.any()) .build(); } private List defaultAuth() { AuthorizationScope authorizationScope = new AuthorizationScope("global", "全局token"); AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; authorizationScopes[0] = authorizationScope; return Arrays.asList(new SecurityReference("token", authorizationScopes)); } }