瀏覽代碼

修复接口注册时少拼接了前缀的BUG

mxd 3 年之前
父節點
當前提交
fc9ee496e9

+ 1 - 1
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<Plugin> 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);

+ 2 - 2
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

+ 9 - 1
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<ApiInfo> {
 
+	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

+ 5 - 10
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<String, RequestMappingInfo> cached = new HashMap<>();
-
 	private static final boolean HAS_GET_PATTERN_PARSER = JavaReflection.getMethod(RequestMappingHandlerMapping.class, "getPatternParser") != null;
 
-	private Mapping(AbstractHandlerMethodMapping<RequestMappingInfo> methodMapping, RequestMappingInfo.BuilderConfiguration config, String base, String prefix) {
+	private Mapping(AbstractHandlerMethodMapping<RequestMappingInfo> 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){