GrayReleasePlugin can append header

This commit is contained in:
hongqiaowei
2022-08-01 15:49:50 +08:00
parent 89c85d1d7b
commit 168cc5b488
2 changed files with 53 additions and 5 deletions

View File

@@ -437,9 +437,19 @@ public abstract class WebUtils {
} }
public static Map<String, String> appendHeader(ServerWebExchange exchange, String name, String value) { public static Map<String, String> appendHeader(ServerWebExchange exchange, String name, String value) {
Map<String, String> hdrs = getAppendHeaders(exchange); Map<String, String> appendHeaders = getAppendHeaders(exchange);
hdrs.put(name, value); appendHeaders.put(name, value);
return hdrs; return appendHeaders;
}
public static Map<String, String> appendHeaders(ServerWebExchange exchange, Map<String, String> headers) {
Map<String, String> appendHeaders = getAppendHeaders(exchange);
headers.forEach(
(name, value) -> {
appendHeaders.put(name, value);
}
);
return appendHeaders;
} }
public static Map<String, String> getAppendHeaders(ServerWebExchange exchange) { public static Map<String, String> getAppendHeaders(ServerWebExchange exchange) {

View File

@@ -385,7 +385,17 @@ public class GrayReleasePlugin extends RequestBodyPlugin {
} }
String qry = newRouteConfig.get("query"); String qry = newRouteConfig.get("query");
if (StringUtils.isNotBlank(qry)) { if (StringUtils.isNotBlank(qry)) {
route.query = qry.trim(); String reqQry = exchange.getRequest().getURI().getQuery();
if (StringUtils.isBlank(reqQry)) {
route.query = qry.trim();
} else {
route.query = reqQry + Consts.S.AND + qry.trim();
}
}
String headerStr = newRouteConfig.get("header");
if (StringUtils.isNotBlank(headerStr)) {
Map<String, String> headers = headerStr2map(headerStr);
WebUtils.appendHeaders(exchange, headers);
} }
String retryCount = newRouteConfig.get("retryCount"); String retryCount = newRouteConfig.get("retryCount");
if (StringUtils.isNotBlank(retryCount)) { if (StringUtils.isNotBlank(retryCount)) {
@@ -455,7 +465,18 @@ public class GrayReleasePlugin extends RequestBodyPlugin {
String qry = newRouteConfig.get("query"); String qry = newRouteConfig.get("query");
if (StringUtils.isNotBlank(qry)) { if (StringUtils.isNotBlank(qry)) {
route.query = qry.trim(); String reqQry = exchange.getRequest().getURI().getQuery();
if (StringUtils.isBlank(reqQry)) {
route.query = qry.trim();
} else {
route.query = reqQry + Consts.S.AND + qry.trim();
}
}
String headerStr = newRouteConfig.get("header");
if (StringUtils.isNotBlank(headerStr)) {
Map<String, String> headers = headerStr2map(headerStr);
WebUtils.appendHeaders(exchange, headers);
} }
String timeout = newRouteConfig.get("timeout"); String timeout = newRouteConfig.get("timeout");
@@ -485,6 +506,11 @@ public class GrayReleasePlugin extends RequestBodyPlugin {
route.backendPath = UrlTransformUtils.transform(route.path, path.trim(), WebUtils.getClientReqPath(exchange)); route.backendPath = UrlTransformUtils.transform(route.path, path.trim(), WebUtils.getClientReqPath(exchange));
WebUtils.setBackendPath(exchange, route.backendPath); WebUtils.setBackendPath(exchange, route.backendPath);
} }
String headerStr = newRouteConfig.get("header");
if (StringUtils.isNotBlank(headerStr)) {
Map<String, String> headers = headerStr2map(headerStr);
WebUtils.appendHeaders(exchange, headers);
}
} }
private Map<String, String> routeConfig2map(String config) { private Map<String, String> routeConfig2map(String config) {
@@ -496,4 +522,16 @@ public class GrayReleasePlugin extends RequestBodyPlugin {
} }
return result; return result;
} }
private Map<String, String> headerStr2map(String headerStr) {
String[] hvs = StringUtils.split(headerStr, Consts.S.COMMA);
Map<String, String> headerMap = new HashMap<>(hvs.length, 1);
for (String hv : hvs) {
int eqIdx = hv.indexOf(Consts.S.EQUAL);
String h = hv.substring(0, eqIdx).trim();
String v = hv.substring(eqIdx + 1).trim();
headerMap.put(h, v);
}
return headerMap;
}
} }