From fc9ee496e94ee850a72744def579f6cd693e3bfe Mon Sep 17 00:00:00 2001 From: mxd <838425805@qq.com> Date: Mon, 28 Feb 2022 22:58:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=8E=A5=E5=8F=A3=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E6=97=B6=E5=B0=91=E6=8B=BC=E6=8E=A5=E4=BA=86=E5=89=8D?= =?UTF-8?q?=E7=BC=80=E7=9A=84BUG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../boot/starter/MagicAPIAutoConfiguration.java | 2 +- .../MagicDynamicRegistryConfiguration.java | 4 ++-- .../service/impl/ApiInfoMagicResourceStorage.java | 10 +++++++++- .../java/org/ssssssss/magicapi/utils/Mapping.java | 15 +++++---------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java index 84fbfa16..7b2bed29 100644 --- a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java +++ b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicAPIAutoConfiguration.java @@ -355,7 +355,7 @@ public class MagicAPIAutoConfiguration implements WebMvcConfigurer, WebSocketCon List plugins = pluginConfigurations.stream().map(MagicPluginConfiguration::plugin).collect(Collectors.toList()); // 构建UI请求处理器 String base = properties.getWeb(); - Mapping mapping = Mapping.create(requestMappingHandlerMapping, base, properties.getPrefix()); + Mapping mapping = Mapping.create(requestMappingHandlerMapping, base); MagicWorkbenchController magicWorkbenchController = new MagicWorkbenchController(configuration, properties, plugins); if (base != null) { configuration.setEnableWeb(true); diff --git a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicDynamicRegistryConfiguration.java b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicDynamicRegistryConfiguration.java index 7ed9229e..1510a4f6 100644 --- a/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicDynamicRegistryConfiguration.java +++ b/magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicDynamicRegistryConfiguration.java @@ -38,13 +38,13 @@ public class MagicDynamicRegistryConfiguration { @Bean @ConditionalOnMissingBean public ApiInfoMagicResourceStorage apiInfoMagicResourceStorage() { - return new ApiInfoMagicResourceStorage(); + return new ApiInfoMagicResourceStorage(properties.getPrefix()); } @Bean @ConditionalOnMissingBean public RequestMagicDynamicRegistry magicRequestMagicDynamicRegistry(ApiInfoMagicResourceStorage apiInfoMagicResourceStorage) throws NoSuchMethodException { - return new RequestMagicDynamicRegistry(apiInfoMagicResourceStorage, Mapping.create(requestMappingHandlerMapping, properties.getWeb(), properties.getPrefix()), properties.isAllowOverride()); + return new RequestMagicDynamicRegistry(apiInfoMagicResourceStorage, Mapping.create(requestMappingHandlerMapping, properties.getWeb()), properties.isAllowOverride()); } @Bean diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/ApiInfoMagicResourceStorage.java b/magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/ApiInfoMagicResourceStorage.java index 949a1301..f63756cc 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/ApiInfoMagicResourceStorage.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/ApiInfoMagicResourceStorage.java @@ -1,10 +1,18 @@ package org.ssssssss.magicapi.core.service.impl; +import org.apache.commons.lang3.StringUtils; import org.ssssssss.magicapi.core.model.ApiInfo; import org.ssssssss.magicapi.core.service.AbstractPathMagicResourceStorage; +import org.ssssssss.magicapi.utils.PathUtils; public class ApiInfoMagicResourceStorage extends AbstractPathMagicResourceStorage { + private String prefix; + + public ApiInfoMagicResourceStorage(String prefix) { + this.prefix = StringUtils.defaultIfBlank(prefix, "") + "/"; + } + @Override public String folder() { return "api"; @@ -17,7 +25,7 @@ public class ApiInfoMagicResourceStorage extends AbstractPathMagicResourceStorag @Override public String buildMappingKey(ApiInfo info) { - return info.getMethod().toUpperCase() + ":" + buildMappingKey(info, magicResourceService.getGroupPath(info.getGroupId())); + return info.getMethod().toUpperCase() + ":" + PathUtils.replaceSlash(this.prefix + buildMappingKey(info, magicResourceService.getGroupPath(info.getGroupId()))); } @Override diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java b/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java index 5665ffde..c2059dd9 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/utils/Mapping.java @@ -21,26 +21,21 @@ public class Mapping { private final String base; - private final String prefix; - private final RequestMappingInfo.BuilderConfiguration config; - private Map cached = new HashMap<>(); - private static final boolean HAS_GET_PATTERN_PARSER = JavaReflection.getMethod(RequestMappingHandlerMapping.class, "getPatternParser") != null; - private Mapping(AbstractHandlerMethodMapping methodMapping, RequestMappingInfo.BuilderConfiguration config, String base, String prefix) { + private Mapping(AbstractHandlerMethodMapping methodMapping, RequestMappingInfo.BuilderConfiguration config, String base) { this.methodMapping = methodMapping; this.config = config; this.base = StringUtils.defaultIfBlank(base, ""); - this.prefix = StringUtils.defaultIfBlank(prefix, ""); } public static Mapping create(RequestMappingHandlerMapping mapping) { - return create(mapping, null, null); + return create(mapping, null); } - public static Mapping create(RequestMappingHandlerMapping mapping, String base, String prefix) { + public static Mapping create(RequestMappingHandlerMapping mapping, String base) { if (HAS_GET_PATTERN_PARSER) { RequestMappingInfo.BuilderConfiguration config = new RequestMappingInfo.BuilderConfiguration(); config.setTrailingSlashMatch(mapping.useTrailingSlashMatch()); @@ -50,9 +45,9 @@ public class Mapping { } else { config.setPathMatcher(mapping.getPathMatcher()); } - return new Mapping(mapping, config, base, prefix); + return new Mapping(mapping, config, base); } - return new Mapping(mapping, null, base, prefix); + return new Mapping(mapping, null, base); } public RequestMappingInfo.Builder paths(String ... paths){ -- GitLab