From eb78063a8501c03fc5d58a8e988d930da36942b3 Mon Sep 17 00:00:00 2001 From: song-tianyang Date: Fri, 17 Jun 2022 16:57:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E9=A1=B9=E7=9B=AE=E8=AE=BE=E7=BD=AE):?= =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E8=87=AA=E5=AE=9A=E4=B9=89=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E7=89=87=E6=AE=B5Get=E8=AF=B7=E6=B1=82=E6=97=A0?= =?UTF-8?q?=E6=B3=95=E5=B8=A6=E5=85=A5body=E4=B8=AD=E7=9A=84kv=E5=8F=82?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --bug=1013992 --user=宋天阳 【接口测试】GitHub#14178,创建代码片段,从API定义导入,导入的代码没有自动填充请求体参数 https://www.tapd.cn/55049933/s/1185448 --- .../project/menu/function/custom-function.js | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/frontend/src/business/components/project/menu/function/custom-function.js b/frontend/src/business/components/project/menu/function/custom-function.js index 5b45010cc8..b373174cd6 100644 --- a/frontend/src/business/components/project/menu/function/custom-function.js +++ b/frontend/src/business/components/project/menu/function/custom-function.js @@ -32,13 +32,18 @@ function groovyCode(requestObj) { bodyType } = requestObj; let requestUrl = ""; + if (requestMethod.toLowerCase() === 'get' && requestBodyKvs) { + //如果是get方法要将kv值加入argument中 + for (let [k, v] of requestBodyKvs) { + requestArguments.set(k, v); + } + } requestPath = getRequestPath(requestArguments, requestPath); let path = getMockPath(domain, port, host); requestPath = path + replaceRestParams(requestPath, requestRest); if (protocol && host && requestPath) { requestUrl = protocol + "://" + domain + (port ? ":" + port : "") + requestPath; } - let body = JSON.stringify(requestBody); if (requestMethod === 'POST' && bodyType === 'kvs') { body = "\""; @@ -77,6 +82,11 @@ function pythonCode(requestObj) { } let headers = getHeaders(requestHeaders); requestBody = requestBody ? JSON.stringify(requestBody) : "{}"; + if (requestMethod.toLowerCase() === 'get' && requestBodyKvs) { + for (let [k, v] of requestBodyKvs) { + requestArguments.set(k, v); + } + } requestPath = getRequestPath(requestArguments, requestPath); let path = getMockPath(domain, port, host); requestPath = path + replaceRestParams(requestPath, requestRest); @@ -140,13 +150,16 @@ function getGroovyHeaders(requestHeaders) { function _pythonCodeTemplate(obj) { let {requestBody, requestBodyKvs, bodyType, headers, requestPath, requestMethod, connType, domain, port} = obj; let reqBody = obj.requestBody; - if (requestMethod === 'Post' && obj.bodyType !== 'json' && obj.requestBodyKvs) { + if (requestMethod.toLowerCase() === 'post' && obj.bodyType === 'kvs' && obj.requestBodyKvs) { reqBody = 'urllib.urlencode({'; // 设置post参数 for (let [k, v] of requestBodyKvs) { reqBody += `\'${k}\':\'${v}\'`; } reqBody += `})`; + if (headers === '{}') { + headers = '{\'Content-type\': \'application/x-www-form-urlencoded\', \'Accept\': \'text/plain\'}'; + } } let host = domain + (port ? ":" + port : ""); @@ -336,6 +349,12 @@ function _jsTemplate(obj) { } else if (protocol && domain) { url = protocol + "://" + domain + requestPath; } + if (requestMethod.toLowerCase() === 'get' && requestBodyKvs) { + //如果是get方法要将kv值加入argument中 + for (let [k, v] of requestBodyKvs) { + requestArguments.set(k, v); + } + } url = getRequestPath(requestArguments, url); try { requestBody = JSON.stringify(requestBody); @@ -358,6 +377,16 @@ function _jsTemplate(obj) { } requestBody += "\""; } + let postParamExecCode = ""; + if (requestBody && requestBody !== "" && requestBody !== "\"\"") { + postParamExecCode = ` +var opt = new java.io.DataOutputStream(conn.getOutputStream()); +var t = (new java.lang.String(parameterData)).getBytes("utf-8"); +opt.write(t); +opt.flush(); +opt.close(); + `; + } return `var urlStr = "${url}"; // 请求地址 @@ -368,11 +397,7 @@ var conn = url.openConnection(); conn.setRequestMethod(requestMethod); conn.setDoOutput(true); ${connStr}conn.connect(); -var opt = new java.io.DataOutputStream(conn.getOutputStream()); -var t = (new java.lang.String(parameterData)).getBytes("utf-8"); -opt.write(t); -opt.flush(); -opt.close(); +${postParamExecCode} var ipt = conn.getInputStream(); var reader = new java.io.BufferedReader(new java.io.InputStreamReader(ipt, "UTF-8")); var lines;