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 381b53db65..64e42f081f 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 @@ -59,7 +59,7 @@ public class ApiUtils { if (apiDefinition == null) { DEException.throwException("未找到"); } - String response = execHttpRequest(apiDefinition, 10); + String response = execHttpRequest(apiDefinition, apiDefinition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout()); fieldList = getTableFields(apiDefinition); result.put("fieldList", fieldList); dataList = fetchResult(response, apiDefinition); @@ -116,7 +116,7 @@ public class ApiUtils { if (apiDefinition == null) { DEException.throwException("未找到"); } - String response = execHttpRequest(apiDefinition, 10); + String response = execHttpRequest(apiDefinition, apiDefinition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout()); return fetchResult(response, apiDefinition); } 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 eb7b13104c..587c358431 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 @@ -834,7 +834,7 @@ public class DatasourceServer implements DatasourceApi { public ApiDefinition checkApiDatasource(Map request) throws DEException { ApiDefinition apiDefinition = JsonUtil.parseObject(new String(java.util.Base64.getDecoder().decode(request.get("data"))), ApiDefinition.class); - String response = ApiUtils.execHttpRequest(apiDefinition, 10); + String response = ApiUtils.execHttpRequest(apiDefinition, apiDefinition.getApiQueryTimeout() == null || apiDefinition.getApiQueryTimeout() <= 0 ? 10 : apiDefinition.getApiQueryTimeout()); if (request.keySet().contains("type") && request.get("type").equals("apiStructure")) { apiDefinition.setShowApiStructure(true); } 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 268705ecd7..409d8f27ee 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 @@ -31,6 +31,7 @@ export interface ApiItem { fields: Field[] jsonFields: JsonField[] useJsonPath: boolean + apiQueryTimeout: number showApiStructure: boolean jsonPath: string serialNumber: number @@ -81,6 +82,7 @@ let apiItem = reactive({ fields: [], jsonFields: [], useJsonPath: false, + apiQueryTimeout: 10, showApiStructure: false, jsonPath: '', serialNumber: -1 @@ -95,6 +97,24 @@ const loading = ref(false) const columns = shallowRef([]) const tableData = shallowRef([]) const apiItemBasicInfo = ref() +const isNumber = (rule, value, callback) => { + if (!value) { + callback(new Error(t('datasource.please_input_query_timeout'))) + return + } + let isNumber = false + var reg = /^\d+$/ + isNumber = reg.test(value) + if (!isNumber) { + callback(new Error(t('datasource.please_input_query_timeout'))) + return + } + if (value <= 0 || value > 300) { + callback(new Error(t('datasource.please_input_query_timeout'))) + return + } + callback() +} const rule = reactive({ name: [ { @@ -109,6 +129,13 @@ const rule = reactive({ trigger: 'blur' } ], + apiQueryTimeout: [ + { + required: true, + validator: isNumber, + trigger: ['blur', 'change'] + } + ], url: [ { required: true, @@ -429,7 +456,11 @@ defineExpose({ /> - + + + + +
{{ t('datasource.isUseJsonPath') }}
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 30551f78df..810ef1964d 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 @@ -19,8 +19,7 @@ public class ApiDefinition { private ApiDefinitionRequest request; private String status; private List> data = new ArrayList<>(); - - + private Integer apiQueryTimeout = 10; private int previewNum = 10; private int maxPreviewNum = 10; private int serialNumber;