Browse Source

Merge remote-tracking branch 'origin/dev' into dev

冷冷 7 years ago
parent
commit
0622f9ae81

+ 35 - 2
pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerAutoConfiguration.java

@@ -17,7 +17,10 @@
 package com.pig4cloud.pigx.common.swagger.config;
 
 
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import springfox.documentation.builders.ApiInfoBuilder;
@@ -43,9 +46,39 @@ import java.util.List;
 public class SwaggerAutoConfiguration {
 
 	@Bean
-	public Docket api() {
+	@ConditionalOnMissingBean
+	public SwaggerProperties swaggerProperties() {
+		return new SwaggerProperties();
+	}
+
+	private static final String DEFAULT_EXCLUDE_PATH = "/error";
+	private static final String BASE_PATH = "/**";
+
+
+	@Bean
+	public Docket api(SwaggerProperties swaggerProperties) {
+		// base-path处理
+		// 当没有配置任何path的时候,解析/**
+		if (swaggerProperties.getBasePath().isEmpty()) {
+			swaggerProperties.getBasePath().add(BASE_PATH);
+		}
+		List<Predicate<String>> basePath = new ArrayList();
+		for (String path : swaggerProperties.getBasePath()) {
+			basePath.add(PathSelectors.ant(path));
+		}
+		// exclude-path处理
+		// 当没有任何配置的时候,解析Spring Boot默认的异常处理路径/error
+		if(swaggerProperties.getExcludePath().isEmpty()){
+			swaggerProperties.getExcludePath().add(DEFAULT_EXCLUDE_PATH);
+		}
+		List<Predicate<String>> excludePath = new ArrayList<>();
+		for (String path : swaggerProperties.getExcludePath()) {
+			excludePath.add(PathSelectors.ant(path));
+		}
 		return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
-			.apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
+			.apis(RequestHandlerSelectors.any()).paths(Predicates.and(
+				Predicates.not(Predicates.or(excludePath)),
+				Predicates.or(basePath)))
 			.build().securitySchemes(Collections.singletonList(securitySchema()))
 			.securityContexts(Collections.singletonList(securityContext())).pathMapping("/");
 	}

+ 26 - 0
pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/config/SwaggerProperties.java

@@ -0,0 +1,26 @@
+package com.pig4cloud.pigx.common.swagger.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * SwaggerProperties
+ *
+ * @author: lisb
+ * @date: 2018/7/25  14:00
+ */
+@Data
+@ConfigurationProperties("swagger")
+public class SwaggerProperties {
+	/**
+	 * swagger会解析的url规则
+	 **/
+	private List<String> basePath = new ArrayList<>();
+	/**
+	 * 在basePath基础上需要排除的url规则
+	 **/
+	private List<String> excludePath = new ArrayList<>();
+}

+ 3 - 0
pigx-config/src/main/resources/config/pigx-upms-dev.yml

@@ -38,3 +38,6 @@ mybatis-plus:
   configuration:
     map-underscore-to-camel-case: true
     cache-enabled: true
+# swagger相关配置
+swagger:
+  exclude-path: /actuator/**,/error