diff --git a/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java b/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java index 0103a5398c..281466dbbd 100644 --- a/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java +++ b/backend/src/main/java/io/dataease/controller/datasource/DatasourceController.java @@ -1,6 +1,8 @@ package io.dataease.controller.datasource; import com.github.xiaoymin.knife4j.annotations.ApiSupport; +import com.google.common.reflect.TypeToken; +import com.google.gson.Gson; import io.dataease.auth.annotation.DeLog; import io.dataease.auth.annotation.DePermission; import io.dataease.commons.constants.DePermissionType; @@ -27,6 +29,7 @@ import springfox.documentation.annotations.ApiIgnore; import javax.annotation.Resource; import java.util.Collection; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; @Api(tags = "数据源:数据源管理") @@ -135,7 +138,9 @@ public class DatasourceController { @ApiIgnore @PostMapping("/checkApiDatasource") - public ApiDefinition checkApiDatasource(@RequestBody ApiDefinition apiDefinition) throws Exception { + public ApiDefinition checkApiDatasource(@RequestBody Map data) throws Exception { + ApiDefinition apiDefinition = new Gson().fromJson(new String(java.util.Base64.getDecoder().decode(data.get("data"))), new TypeToken() { + }.getType()); return datasourceService.checkApiDatasource(apiDefinition); } diff --git a/frontend/src/views/panel/filter/filterMain/FilterControl.vue b/frontend/src/views/panel/filter/filterMain/FilterControl.vue index 46d2117b18..288168622f 100644 --- a/frontend/src/views/panel/filter/filterMain/FilterControl.vue +++ b/frontend/src/views/panel/filter/filterMain/FilterControl.vue @@ -166,7 +166,7 @@
{ + checkApiDatasource({'data': Base64.encode(JSON.stringify(data))}).then(res => { this.loading = false this.disabledNext = false this.apiItem.status = 'Success' @@ -858,7 +858,7 @@ export default { const data = JSON.parse(JSON.stringify(this.apiItem)) data.request = JSON.stringify(data.request) this.loading = true - checkApiDatasource(data).then(res => { + checkApiDatasource({'data': Base64.encode(JSON.stringify(data))}).then(res => { this.loading = false this.$success(i18n.t('commons.success')) this.apiItem.fields = res.data.fields diff --git a/frontend/src/views/system/datasource/DsConfiguration.vue b/frontend/src/views/system/datasource/DsConfiguration.vue index 322f95911b..397bbffd7c 100644 --- a/frontend/src/views/system/datasource/DsConfiguration.vue +++ b/frontend/src/views/system/datasource/DsConfiguration.vue @@ -734,6 +734,7 @@ import { checkApiDatasource, getSchema } from '@/api/system/datasource' import ApiHttpRequestForm from '@/views/system/datasource/ApiHttpRequestForm' import dePwd from '@/components/deCustomCm/DePwd.vue' import msgCfm from '@/components/msgCfm' +import { Base64 } from 'js-base64' export default { name: 'DsConfiguration', components: { @@ -1069,10 +1070,10 @@ export default { } this.$refs.apiItemBasicInfo.validate((valid) => { if (valid) { - const data = JSON.parse(JSON.stringify(this.apiItem)) + const data = Base64.encode(JSON.stringify(this.apiItem)) this.loading = true this.disabledNext = true - checkApiDatasource(data) + checkApiDatasource({'data': data}) .then((res) => { this.loading = false this.disabledNext = false