提交 abf4b164 authored 作者: 黄夏豪's avatar 黄夏豪

fix(base): 修改了path的正则匹配

上级 319a46f1
......@@ -140,8 +140,7 @@ public class HttpClientActuator implements Actuator {
completeHttpRequestDetail(httpRequestDetail,envId,projectId);
CloseableHttpResponse response = null;
Long startTime = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();
String url = initUrlString(httpRequestDetail);
String url = initUrlString(httpRequestDetail,envId,projectId);
HttpRequestBase requestBase = initHttpRequestBase(url, httpRequestDetail.getMethod());
if (requestBase instanceof HttpEntityEnclosingRequestBase) {
HttpEntity httpRequestBase = initHttpEntity(httpRequestDetail);
......@@ -274,7 +273,7 @@ public class HttpClientActuator implements Actuator {
}
public String initUrlString(HttpRequestDetail httpRequestDetail) {
public String initUrlString(HttpRequestDetail httpRequestDetail,Long envId, Long projectId) {
String url = httpRequestDetail.getUrl();
try {
if (httpRequestDetail.getRequestType() == HttpRequestType.QUERY) {
......@@ -297,7 +296,7 @@ public class HttpClientActuator implements Actuator {
List<RequestBody> requestBodies = httpRequestDetail.getRequestBodies();
Map<String, String> requestMap =
requestBodies.stream().collect(Collectors.toMap(RequestBody::getKey, RequestBody::getValue));
url = completeExpressionUtil.completePathVariable(url,requestMap);
url = completeExpressionUtil.completePathVariable(url,requestMap,envId,projectId);
}
} catch (URISyntaxException e) {
throw new HttpRequestException(String.format("URL格式不正确,不正确的URL为: %s",url));
......
......@@ -9,6 +9,7 @@ import org.matrix.actuators.move.MoveActuator;
import org.matrix.actuators.sql.SqlExpActuator;
import org.matrix.util.SpringUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Map;
......@@ -31,7 +32,7 @@ public class CompleteExpressionUtil {
public static final String DYNAMIC_VARIABLE_REG = "\\$\\{(((?!(pre|mid|aft)[0-9]+\\.).)*?)}(\\[(.*?)])?";
public static final String PATH_REG = "(?<=\\{)(.+?)(?=\\})";
public static final String PATH_REG = "(?<=[^(\\$)])\\{(.+?)\\}";
public String completeVariable(String expression, Long envId, Long projectId) {
String result = expression;
......@@ -50,12 +51,23 @@ public class CompleteExpressionUtil {
return result;
}
public String completePathVariable(String expression, Map<String, String> source) {
public String completePathVariable(String expression, Map<String, String> source,Long envId, Long projectId) {
String result = expression;
result = regexExpression(
result, PATH_REG,
source, (o, s) ->
((Map<String, String>)o).get(s));
source, (o, s) ->{
if (o instanceof Map){
String value = ((Map<String, String>)o).get(s.substring(1,s.length()-1));
if (value!=null&&!"".equals(value)){
completeVariable(value,envId,projectId);
return value;
}else {
return "";
}
}else {
return "";
}
});
return result;
}
......@@ -83,9 +95,8 @@ public class CompleteExpressionUtil {
}
public String regexExpression(String expression, String regex,Object sourceContent, BiFunction<Object,String,String> biFunction){
String result = expression;
Pattern pattern = Pattern.compile(regex);
Matcher mat = pattern.matcher(result);
Matcher mat = pattern.matcher(expression);
StringBuffer sBuffer=new StringBuffer();
while (mat.find()) {
String group = mat.group();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论