From aaa13dcda639f2b377d65ab2efdca0e9d7d72ef4 Mon Sep 17 00:00:00 2001 From: taojinlong Date: Tue, 21 May 2024 17:50:09 +0800 Subject: [PATCH] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E6=BA=90):=20APi?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=BA=905000=E6=9D=A1=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E9=A2=84=E8=A7=88=E6=95=B0=E6=8D=AE=E6=98=BE=E7=A4=BA=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=95=B0=E6=8D=AE=E4=B8=8D=E6=AD=A3=E7=A1=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/provider/ApiUtils.java | 21 +++++++++++++++++++ .../datasource/server/DatasourceServer.java | 4 ++++ .../datasource/form/ApiHttpRequestDraw.vue | 2 +- .../io/dataease/api/ds/vo/ApiDefinition.java | 3 +-- 4 files changed, 27 insertions(+), 3 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 64e42f081f..d6317d83cc 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 @@ -194,6 +194,26 @@ public class ApiUtils { return response; } + private static void previewNum(List> field){ + for (Map stringObjectMap : field) { + JSONArray newArray = new JSONArray(); + if (stringObjectMap.get("value") != null) { + try { + TypeReference listTypeReference = new TypeReference() { + }; + JSONArray array = objectMapper.readValue(stringObjectMap.get("value").toString(), listTypeReference); + if(array.size() > 100){ + for (int i = 0; i < Math.min(100, array.size()); i++) { + newArray.add(array.get(i)); + } + stringObjectMap.put("value", newArray); + } + } catch (Exception e) { + + } + } + } + } public static ApiDefinition checkApiDefinition(ApiDefinition apiDefinition, String response) throws DEException { if (StringUtils.isEmpty(response)) { @@ -217,6 +237,7 @@ public class ApiUtils { rootPath = "$"; handleStr(apiDefinition, response, fields, rootPath); } + previewNum(fields); apiDefinition.setJsonFields(fields); return apiDefinition; } else { diff --git a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java index 587c358431..bd37f22672 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/server/DatasourceServer.java @@ -493,6 +493,9 @@ public class DatasourceServer implements DatasourceApi { public DatasourceDTO get(Long datasourceId) throws DEException { DatasourceDTO datasourceDTO = new DatasourceDTO(); CoreDatasource datasource = datasourceMapper.selectById(datasourceId); + if(datasource == null){ + DEException.throwException("不存在的数据源!"); + } BeanUtils.copyBean(datasourceDTO, datasource); TypeReference> listTypeReference = new TypeReference>() { }; @@ -838,6 +841,7 @@ public class DatasourceServer implements DatasourceApi { if (request.keySet().contains("type") && request.get("type").equals("apiStructure")) { apiDefinition.setShowApiStructure(true); } + ApiUtils.checkApiDefinition(apiDefinition, response); if (apiDefinition.getRequest().getAuthManager() != null && StringUtils.isNotBlank(apiDefinition.getRequest().getAuthManager().getUsername()) && StringUtils.isNotBlank(apiDefinition.getRequest().getAuthManager().getPassword()) && apiDefinition.getRequest().getAuthManager().getVerification().equals("Basic Auth")) { apiDefinition.getRequest().getAuthManager().setUsername(new String(Base64.getEncoder().encode(apiDefinition.getRequest().getAuthManager().getUsername().getBytes()))); 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 409d8f27ee..ab4e66effd 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 @@ -293,8 +293,8 @@ const previewData = () => { for (let i = 0; i < apiItem.fields.length; i++) { for (let j = 0; j < apiItem.fields[i].value.length; j++) { data[j][apiItem.fields[i].name] = apiItem.fields[i].value[j] - data[j]['id'] = apiItem.fields[i].name } + columnTmp.push({ key: apiItem.fields[i].name, dataKey: apiItem.fields[i].name, diff --git a/sdk/api/api-base/src/main/java/io/dataease/api/ds/vo/ApiDefinition.java b/sdk/api/api-base/src/main/java/io/dataease/api/ds/vo/ApiDefinition.java index 810ef1964d..8a6f3e18db 100644 --- a/sdk/api/api-base/src/main/java/io/dataease/api/ds/vo/ApiDefinition.java +++ b/sdk/api/api-base/src/main/java/io/dataease/api/ds/vo/ApiDefinition.java @@ -20,8 +20,7 @@ public class ApiDefinition { private String status; private List> data = new ArrayList<>(); private Integer apiQueryTimeout = 10; - private int previewNum = 10; - private int maxPreviewNum = 10; + private int previewNum = 100; private int serialNumber; private boolean useJsonPath; private String jsonPath;