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

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

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