From adde375a5da5fa42f94235922cb6c1feff620856 Mon Sep 17 00:00:00 2001 From: Haotian Zhang <928016560@qq.com> Date: Tue, 26 Sep 2023 13:41:19 +0800 Subject: [PATCH] feat:add swagger exposure filters. --- .../polaris/contract/filter/ApiDocServletFilter.java | 8 +++++--- .../polaris/contract/filter/ApiDocWebFluxFilter.java | 8 +++++--- .../cloud/polaris/contract/filter/FilterConstant.java | 9 +++++++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocServletFilter.java b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocServletFilter.java index c17969863..920c1efe1 100644 --- a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocServletFilter.java +++ b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocServletFilter.java @@ -29,7 +29,8 @@ import org.springframework.lang.NonNull; import org.springframework.web.filter.OncePerRequestFilter; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_RESOURCE_PREFIX; -import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_UI_URL; +import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_UI_V2_URL; +import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_UI_V3_URL; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_V2_API_DOC_URL; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_V3_API_DOC_URL; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_WEBJARS_V2_PREFIX; @@ -54,9 +55,10 @@ public class ApiDocServletFilter extends OncePerRequestFilter { throws ServletException, IOException { if (!polarisContractProperties.isExposure()) { String path = httpServletRequest.getServletPath(); - if (path.equals(SWAGGER_V2_API_DOC_URL) || + if (path.startsWith(SWAGGER_V2_API_DOC_URL) || path.startsWith(SWAGGER_V3_API_DOC_URL) || - path.equals(SWAGGER_UI_URL) || + path.startsWith(SWAGGER_UI_V2_URL) || + path.startsWith(SWAGGER_UI_V3_URL) || path.startsWith(SWAGGER_RESOURCE_PREFIX) || path.startsWith(SWAGGER_WEBJARS_V2_PREFIX) || path.startsWith(SWAGGER_WEBJARS_V3_PREFIX)) { diff --git a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocWebFluxFilter.java b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocWebFluxFilter.java index 36ef84dfe..ac9c23d8a 100644 --- a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocWebFluxFilter.java +++ b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/ApiDocWebFluxFilter.java @@ -29,7 +29,8 @@ import org.springframework.web.server.WebFilter; import org.springframework.web.server.WebFilterChain; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_RESOURCE_PREFIX; -import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_UI_URL; +import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_UI_V2_URL; +import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_UI_V3_URL; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_V2_API_DOC_URL; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_V3_API_DOC_URL; import static com.tencent.cloud.polaris.contract.filter.FilterConstant.SWAGGER_WEBJARS_V2_PREFIX; @@ -52,9 +53,10 @@ public class ApiDocWebFluxFilter implements WebFilter { public Mono filter(ServerWebExchange serverWebExchange, @NonNull WebFilterChain webFilterChain) { if (!polarisContractProperties.isExposure()) { String path = serverWebExchange.getRequest().getURI().getPath(); - if (path.equals(SWAGGER_V2_API_DOC_URL) || + if (path.startsWith(SWAGGER_V2_API_DOC_URL) || path.startsWith(SWAGGER_V3_API_DOC_URL) || - path.equals(SWAGGER_UI_URL) || + path.startsWith(SWAGGER_UI_V2_URL) || + path.startsWith(SWAGGER_UI_V3_URL) || path.startsWith(SWAGGER_RESOURCE_PREFIX) || path.startsWith(SWAGGER_WEBJARS_V2_PREFIX) || path.startsWith(SWAGGER_WEBJARS_V3_PREFIX)) { diff --git a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/FilterConstant.java b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/FilterConstant.java index ef49af57c..d95ae14fa 100644 --- a/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/FilterConstant.java +++ b/spring-cloud-starter-tencent-polaris-contract/src/main/java/com/tencent/cloud/polaris/contract/filter/FilterConstant.java @@ -35,9 +35,14 @@ public final class FilterConstant { public static final String SWAGGER_V3_API_DOC_URL = "/v3/api-docs"; /** - * Swagger UI url. + * Swagger UI V2 url. */ - public static final String SWAGGER_UI_URL = "/swagger-ui.html"; + public static final String SWAGGER_UI_V2_URL = "/swagger-ui.html"; + + /** + * Swagger UI V3 url. + */ + public static final String SWAGGER_UI_V3_URL = "/swagger-ui/index.html"; /** * Swagger resource url prefix.