diff --git a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java index c708e19d9c..d82500fcfa 100644 --- a/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java +++ b/backend/src/main/java/io/metersphere/api/service/ApiDefinitionService.java @@ -201,6 +201,7 @@ public class ApiDefinitionService { test.setName(request.getName()); test.setPath(request.getPath()); test.setProjectId(request.getProjectId()); + request.getRequest().setId(request.getId()); test.setRequest(JSONObject.toJSONString(request.getRequest())); test.setUpdateTime(System.currentTimeMillis()); test.setStatus(request.getStatus()); @@ -227,6 +228,7 @@ public class ApiDefinitionService { test.setPath(request.getPath()); test.setModuleId(request.getModuleId()); test.setProjectId(request.getProjectId()); + request.getRequest().setId(request.getId()); test.setRequest(JSONObject.toJSONString(request.getRequest())); test.setCreateTime(System.currentTimeMillis()); test.setUpdateTime(System.currentTimeMillis()); diff --git a/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue b/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue index 3dacc7a663..0136fad3e7 100644 --- a/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue +++ b/frontend/src/business/components/api/automation/scenario/EditApiScenario.vue @@ -552,7 +552,7 @@ remove(row, node) { const parent = node.parent const hashTree = parent.data.hashTree || parent.data; - const index = hashTree.findIndex(d => d.id != undefined && row.id != undefined && d.id === row.id) + const index = hashTree.findIndex(d => d.resourceId != undefined && row.resourceId != undefined && d.resourceId === row.resourceId) hashTree.splice(index, 1); this.sort(); this.reload(); diff --git a/frontend/src/business/components/api/definition/ApiDefinition.vue b/frontend/src/business/components/api/definition/ApiDefinition.vue index 39ee408a7b..3ce95ebb1a 100644 --- a/frontend/src/business/components/api/definition/ApiDefinition.vue +++ b/frontend/src/business/components/api/definition/ApiDefinition.vue @@ -268,7 +268,7 @@ }, saveApi(data) { this.setTabTitle(data); - this.$refs.apiList[0].initApiTable(data); + this.$refs.apiList[0].initTable(data); }, showExecResult(row){ diff --git a/frontend/src/business/components/api/definition/components/complete/EditCompleteHTTPApi.vue b/frontend/src/business/components/api/definition/components/complete/EditCompleteHTTPApi.vue index bbb7d76635..a5a4fb7b07 100644 --- a/frontend/src/business/components/api/definition/components/complete/EditCompleteHTTPApi.vue +++ b/frontend/src/business/components/api/definition/components/complete/EditCompleteHTTPApi.vue @@ -100,13 +100,19 @@ name: "MsAddCompleteHttpApi", components: {MsResponseText, MsApiRequestForm, MsJsr233Processor}, data() { + let validateURL = (rule, value, callback) => { + if (!this.httpForm.path.startsWith("/") || this.httpForm.path.match(/\s/) != null) { + callback(this.$t('api_test.definition.request.path_valid_info')); + } + callback(); + }; return { rule: { name: [ {required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'}, {max: 50, message: this.$t('test_track.length_less_than') + '50', trigger: 'blur'} ], - path: [{required: true, message: this.$t('api_test.definition.request.path_info'), trigger: 'blur'}], + path: [{required: true, message: this.$t('api_test.definition.request.path_info'), trigger: 'blur'}, {validator: validateURL, trigger: 'blur'}], userId: [{required: true, message: this.$t('test_track.case.input_maintainer'), trigger: 'change'}], moduleId: [{required: true, message: this.$t('test_track.case.input_module'), trigger: 'change'}], status: [{required: true, message: this.$t('commons.please_select'), trigger: 'change'}], @@ -124,10 +130,6 @@ runTest() { this.$refs['httpForm'].validate((valid) => { if (valid) { - if(this.httpForm.path.match(/\s/)!=null){ - this.$error(this.$t("api_test.definition.request.path_valid_info")); - return false; - } this.setParameter(); this.$emit('runTest', this.httpForm); } else { @@ -150,10 +152,6 @@ saveApi() { this.$refs['httpForm'].validate((valid) => { if (valid) { - if(this.httpForm.path.match(/\s/)!=null){ - this.$error(this.$t("api_test.definition.request.path_valid_info")); - return false; - } this.setParameter(); this.$emit('saveApi', this.httpForm); } diff --git a/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue b/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue index d272e61ee9..e1692d8b37 100644 --- a/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue +++ b/frontend/src/business/components/api/definition/components/debug/DebugHttpPage.vue @@ -63,10 +63,20 @@ scenario: Boolean, }, data() { + let validateURL = (rule, value, callback) => { + try { + new URL(this.debugForm.url); + } catch (e) { + callback(this.$t('api_test.request.url_invalid')); + } + }; return { rules: { method: [{required: true, message: this.$t('test_track.case.input_maintainer'), trigger: 'change'}], - url: [{required: true, message: this.$t('api_test.definition.request.path_all_info'), trigger: 'blur'}], + url: [ + {max: 500, required: true, message: this.$t('commons.input_limit', [1, 500]), trigger: 'blur'}, + {validator: validateURL, trigger: 'blur'} + ], }, debugForm: {method: REQ_METHOD[0].id, environmentId: ""}, options: [], diff --git a/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue b/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue index 016912750a..d58117c3f8 100644 --- a/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue +++ b/frontend/src/business/components/api/definition/components/runtest/RunTestHTTPPage.vue @@ -206,6 +206,8 @@ data.request = JSON.stringify(this.api.request); data.method = this.api.method; data.url = this.api.url; + let id = getUUID(); + data.id = id; data.status = this.api.status; data.userId = this.api.userId; data.description = this.api.description; diff --git a/frontend/src/business/components/common/head/SearchList.vue b/frontend/src/business/components/common/head/SearchList.vue index 1cc176fd5e..2d13248506 100644 --- a/frontend/src/business/components/common/head/SearchList.vue +++ b/frontend/src/business/components/common/head/SearchList.vue @@ -1,6 +1,6 @@ - +