Browse Source

修复`import`其它接口时需要携带`magic-api.prefix`的问题

mxd 3 years ago
parent
commit
3b952d76ce

+ 1 - 1
magic-api-spring-boot-starter/src/main/java/org/ssssssss/magicapi/spring/boot/starter/MagicDynamicRegistryConfiguration.java

@@ -44,7 +44,7 @@ public class MagicDynamicRegistryConfiguration {
 	@Bean
 	@ConditionalOnMissingBean
 	public RequestMagicDynamicRegistry magicRequestMagicDynamicRegistry(ApiInfoMagicResourceStorage apiInfoMagicResourceStorage) throws NoSuchMethodException {
-		return new RequestMagicDynamicRegistry(apiInfoMagicResourceStorage, Mapping.create(requestMappingHandlerMapping, properties.getWeb()), properties.isAllowOverride());
+		return new RequestMagicDynamicRegistry(apiInfoMagicResourceStorage, Mapping.create(requestMappingHandlerMapping, properties.getWeb()), properties.isAllowOverride(), properties.getPrefix());
 	}
 
 	@Bean

+ 1 - 1
magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/ApiInfoMagicResourceStorage.java

@@ -9,7 +9,7 @@ import java.util.Objects;
 
 public class ApiInfoMagicResourceStorage extends AbstractPathMagicResourceStorage<ApiInfo> {
 
-	private String prefix;
+	private final String prefix;
 
 	public ApiInfoMagicResourceStorage(String prefix) {
 		this.prefix = StringUtils.defaultIfBlank(prefix, "") + "/";

+ 7 - 2
magic-api/src/main/java/org/ssssssss/magicapi/core/service/impl/RequestMagicDynamicRegistry.java

@@ -1,5 +1,6 @@
 package org.ssssssss.magicapi.core.service.impl;
 
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.event.EventListener;
@@ -15,6 +16,7 @@ import org.ssssssss.magicapi.core.model.ApiInfo;
 import org.ssssssss.magicapi.core.service.AbstractMagicDynamicRegistry;
 import org.ssssssss.magicapi.core.service.MagicResourceStorage;
 import org.ssssssss.magicapi.utils.Mapping;
+import org.ssssssss.magicapi.utils.PathUtils;
 import org.ssssssss.magicapi.utils.ScriptManager;
 import org.ssssssss.script.MagicResourceLoader;
 import org.ssssssss.script.MagicScriptContext;
@@ -43,10 +45,13 @@ public class RequestMagicDynamicRegistry extends AbstractMagicDynamicRegistry<Ap
 
 	private final boolean allowOverride;
 
-	public RequestMagicDynamicRegistry(MagicResourceStorage<ApiInfo> magicResourceStorage, Mapping mapping, boolean allowOverride) throws NoSuchMethodException {
+	private final String prefix;
+
+	public RequestMagicDynamicRegistry(MagicResourceStorage<ApiInfo> magicResourceStorage, Mapping mapping, boolean allowOverride, String prefix) throws NoSuchMethodException {
 		super(magicResourceStorage);
 		this.mapping = mapping;
 		this.allowOverride = allowOverride;
+		this.prefix = StringUtils.defaultIfBlank(prefix, "") + "/";
 		MagicResourceLoader.addFunctionLoader(this::lookupLambdaFunction);
 	}
 
@@ -55,7 +60,7 @@ public class RequestMagicDynamicRegistry extends AbstractMagicDynamicRegistry<Ap
 		if (index > -1) {
 			String method = name.substring(0, index);
 			String path = name.substring(index + 1);
-			ApiInfo info = getMapping(method.toUpperCase() + ":" + path);
+			ApiInfo info = getMapping(method.toUpperCase() + ":" + PathUtils.replaceSlash(this.prefix + path));
 			if (info != null) {
 				String scriptName = MagicConfiguration.getMagicResourceService().getScriptName(info);
 				return (MagicScriptLambdaFunction) (variables, args) -> {