From 479249a5da61c353c78f208764261ead0b390cd4 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Tue, 12 Aug 2025 16:57:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E3=80=90=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E3=80=91API=E6=95=B0=E6=8D=AE=E6=BA=90=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=8F=AF=E4=BB=A5=E8=B0=83=E7=94=A8=E5=B7=B2?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=8E=A5=E5=8F=A3=E5=8F=82=E6=95=B0=20#16470?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/provider/ApiUtils.java | 64 +++++++++++++++---- .../datasource/form/ApiHttpRequestDraw.vue | 2 +- .../data/datasource/form/ApiKeyValue.vue | 24 ++----- .../data/datasource/form/ApiVariable.vue | 21 ++---- 4 files changed, 64 insertions(+), 47 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java index 504af43734..0feeb882de 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java @@ -218,10 +218,18 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { - httpClientConfig.addHeader(header.get("name").toString(), dataList.get(0)[i]); + if (dataList.size() == 1) { + httpClientConfig.addHeader(header.get("name").toString(), dataList.get(0)[i]); + } else { + List datas = new ArrayList<>(); + for (String[] data : dataList) { + datas.add(data[i]); + } + httpClientConfig.addHeader(header.get("name").toString(), JsonUtil.toJSONString(datas).toString()); + } } } } @@ -240,10 +248,18 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { - result = result.replace("${" + param + "}", dataList.get(0)[i]); + if (dataList.size() == 1) { + result = result.replace("${" + param + "}", dataList.get(0)[i]); + } else { + List datas = new ArrayList<>(); + for (String[] data : dataList) { + datas.add(data[i]); + } + result = result.replace("${" + param + "}", JsonUtil.toJSONString(datas).toString()); + } } } } @@ -282,7 +298,7 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getOriginName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { params.add(argument.get("name") + "=" + dataList.get(0)[i]); @@ -304,7 +320,7 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(true, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { result = result.replace("${" + param + "}", dataList.get(0)[i]); @@ -357,10 +373,18 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getOriginName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(false, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(false, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { - raw = raw.replace("${" + param + "}", dataList.get(0)[i]); + if (dataList.size() == 1) { + raw = raw.replace("${" + param + "}", dataList.get(0)[i]); + } else { + List datas = new ArrayList<>(); + for (String[] data : dataList) { + datas.add(data[i]); + } + raw = raw.replace("${" + param + "}", JsonUtil.toJSONString(datas).toString()); + } } } } @@ -390,10 +414,18 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getOriginName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(false, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(false, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { - body.put(jsonNode.get("name").asText(), dataList.get(0)[i]); + if (dataList.size() == 1) { + body.put(jsonNode.get("name").asText(), dataList.get(0)[i]); + } else { + List datas = new ArrayList<>(); + for (String[] data : dataList) { + datas.add(data[i]); + } + body.put(jsonNode.get("name").asText(), JsonUtil.toJSONString(datas).toString()); + } } } } @@ -412,10 +444,18 @@ public class ApiUtils { for (int i = 0; i < definition.getFields().size(); i++) { TableField field = definition.getFields().get(i); if (field.getOriginName().equalsIgnoreCase(param)) { - String resultStr = execHttpRequest(false, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), null); + String resultStr = execHttpRequest(false, definition, definition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout(), paramsList); List dataList = fetchResult(resultStr, definition); if (dataList.size() > 0) { - result = result.replace("${" + param + "}", dataList.get(0)[i]); + if (dataList.size() == 1) { + result = result.replace("${" + param + "}", dataList.get(0)[i]); + } else { + List datas = new ArrayList<>(); + for (String[] data : dataList) { + datas.add(data[i]); + } + result = result.replace("${" + param + "}", JsonUtil.toJSONString(datas).toString()); + } } } } diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue b/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue index 34df5e4074..610997881c 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/ApiHttpRequestDraw.vue @@ -216,7 +216,7 @@ const initApiItem = ( jsName.value = getPluginStatic() } valueList.value = [] - if (val.type !== 'params' && paramsList) { + if (paramsList) { for (let i = 0; i < paramsList.length; i++) { valueList.value = valueList.value.concat(paramsList[i].fields) } diff --git a/core/core-frontend/src/views/visualized/data/datasource/form/ApiKeyValue.vue b/core/core-frontend/src/views/visualized/data/datasource/form/ApiKeyValue.vue index c0507782db..7decd85004 100644 --- a/core/core-frontend/src/views/visualized/data/datasource/form/ApiKeyValue.vue +++ b/core/core-frontend/src/views/visualized/data/datasource/form/ApiKeyValue.vue @@ -124,7 +124,7 @@ const timeFunLists = [ - + - + - - + + - - +