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

This commit is contained in:
mxd 2022-03-12 12:47:07 +08:00
parent bdf7c1928c
commit 3b952d76ce
3 changed files with 9 additions and 4 deletions

View File

@ -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

View File

@ -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, "") + "/";

View File

@ -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) -> {