fix(系统设置): 代码片段生成代码时解析路径中的rest参数
--bug=1013664 --user=李玉号 【系统设置】github#14102,从API定义导入CASE的python代码REST参数不会填写 https://www.tapd.cn/55049933/s/1179853 Closes #14102
This commit is contained in:
parent
dd6d7c770a
commit
0efa692599
|
@ -107,6 +107,7 @@ export default {
|
||||||
_parseRequestObj(data) {
|
_parseRequestObj(data) {
|
||||||
let requestHeaders = new Map();
|
let requestHeaders = new Map();
|
||||||
let requestArguments = new Map();
|
let requestArguments = new Map();
|
||||||
|
let requestRest = new Map();
|
||||||
let requestMethod = "";
|
let requestMethod = "";
|
||||||
let requestBody = "";
|
let requestBody = "";
|
||||||
let requestPath = "";
|
let requestPath = "";
|
||||||
|
@ -115,6 +116,14 @@ export default {
|
||||||
requestPath = request.path;
|
requestPath = request.path;
|
||||||
requestMethod = request.method;
|
requestMethod = request.method;
|
||||||
let headers = request.headers;
|
let headers = request.headers;
|
||||||
|
let rest = request.rest;
|
||||||
|
if (rest && rest.length > 0) {
|
||||||
|
rest.forEach(r => {
|
||||||
|
if (r.enable) {
|
||||||
|
requestRest.set(r.name, r.value);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
if (headers && headers.length > 0) {
|
if (headers && headers.length > 0) {
|
||||||
headers.forEach(header => {
|
headers.forEach(header => {
|
||||||
if (header.name) {
|
if (header.name) {
|
||||||
|
@ -134,7 +143,7 @@ export default {
|
||||||
if (body.json) {
|
if (body.json) {
|
||||||
requestBody = body.raw;
|
requestBody = body.raw;
|
||||||
}
|
}
|
||||||
return {requestPath, requestHeaders, requestMethod, requestBody, requestArguments}
|
return {requestPath, requestHeaders, requestMethod, requestBody, requestArguments, requestRest}
|
||||||
},
|
},
|
||||||
apiClose() {
|
apiClose() {
|
||||||
|
|
||||||
|
|
|
@ -114,6 +114,7 @@ export default {
|
||||||
_parseRequestObj(data) {
|
_parseRequestObj(data) {
|
||||||
let requestHeaders = new Map();
|
let requestHeaders = new Map();
|
||||||
let requestArguments = new Map();
|
let requestArguments = new Map();
|
||||||
|
let requestRest = new Map();
|
||||||
let requestMethod = "";
|
let requestMethod = "";
|
||||||
let requestBody = "";
|
let requestBody = "";
|
||||||
let requestPath = "";
|
let requestPath = "";
|
||||||
|
@ -122,12 +123,20 @@ export default {
|
||||||
requestPath = request.path;
|
requestPath = request.path;
|
||||||
requestMethod = request.method;
|
requestMethod = request.method;
|
||||||
let headers = request.headers;
|
let headers = request.headers;
|
||||||
|
let rest = request.rest;
|
||||||
|
if (rest && rest.length > 0) {
|
||||||
|
rest.forEach(r => {
|
||||||
|
if (r.enable) {
|
||||||
|
requestRest.set(r.name, r.value);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
if (headers && headers.length > 0) {
|
if (headers && headers.length > 0) {
|
||||||
headers.forEach(header => {
|
headers.forEach(header => {
|
||||||
if (header.name) {
|
if (header.name) {
|
||||||
requestHeaders.set(header.name, header.value);
|
requestHeaders.set(header.name, header.value);
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
}
|
}
|
||||||
let args = request.arguments;
|
let args = request.arguments;
|
||||||
if (args && args.length) {
|
if (args && args.length) {
|
||||||
|
@ -141,7 +150,7 @@ export default {
|
||||||
if (body.json) {
|
if (body.json) {
|
||||||
requestBody = body.raw;
|
requestBody = body.raw;
|
||||||
}
|
}
|
||||||
return {requestPath, requestHeaders, requestMethod, requestBody, requestArguments}
|
return {requestPath, requestHeaders, requestMethod, requestBody, requestArguments, requestRest}
|
||||||
},
|
},
|
||||||
apiClose() {
|
apiClose() {
|
||||||
|
|
||||||
|
|
|
@ -26,9 +26,10 @@ export function getCodeTemplate(language, requestObj) {
|
||||||
|
|
||||||
function groovyCode(requestObj) {
|
function groovyCode(requestObj) {
|
||||||
let {requestHeaders = new Map(), requestBody = "", requestPath = "",
|
let {requestHeaders = new Map(), requestBody = "", requestPath = "",
|
||||||
requestMethod = "", host = "", protocol = "", requestArguments = new Map()} = requestObj;
|
requestMethod = "", host = "", protocol = "", requestArguments = new Map(), requestRest = new Map()} = requestObj;
|
||||||
let requestUrl = "";
|
let requestUrl = "";
|
||||||
requestPath = getRequestPath(requestArguments, requestPath);
|
requestPath = getRequestPath(requestArguments, requestPath);
|
||||||
|
requestPath = replaceRestParams(requestPath, requestRest);
|
||||||
if (protocol && host && requestPath) {
|
if (protocol && host && requestPath) {
|
||||||
requestUrl = protocol + "://" + host + requestPath;
|
requestUrl = protocol + "://" + host + requestPath;
|
||||||
}
|
}
|
||||||
|
@ -40,7 +41,7 @@ function groovyCode(requestObj) {
|
||||||
|
|
||||||
function pythonCode(requestObj) {
|
function pythonCode(requestObj) {
|
||||||
let {requestHeaders = new Map(), requestBody = "", requestPath = "/",
|
let {requestHeaders = new Map(), requestBody = "", requestPath = "/",
|
||||||
requestMethod = "", host = "", protocol = "http", requestArguments = new Map()} = requestObj;
|
requestMethod = "", host = "", protocol = "http", requestArguments = new Map(), requestRest = new Map()} = requestObj;
|
||||||
let connType = "HTTPConnection";
|
let connType = "HTTPConnection";
|
||||||
if (protocol === 'https') {
|
if (protocol === 'https') {
|
||||||
connType = "HTTPSConnection";
|
connType = "HTTPSConnection";
|
||||||
|
@ -48,6 +49,7 @@ function pythonCode(requestObj) {
|
||||||
let headers = getHeaders(requestHeaders);
|
let headers = getHeaders(requestHeaders);
|
||||||
requestBody = requestBody ? JSON.stringify(requestBody) : "{}";
|
requestBody = requestBody ? JSON.stringify(requestBody) : "{}";
|
||||||
requestPath = getRequestPath(requestArguments, requestPath);
|
requestPath = getRequestPath(requestArguments, requestPath);
|
||||||
|
requestPath = replaceRestParams(requestPath, requestRest);
|
||||||
let obj = {requestBody, headers, host, requestPath, requestMethod, connType};
|
let obj = {requestBody, headers, host, requestPath, requestMethod, connType};
|
||||||
return _pythonCodeTemplate(obj);
|
return _pythonCodeTemplate(obj);
|
||||||
}
|
}
|
||||||
|
@ -142,7 +144,8 @@ log.info(conn.content.text)
|
||||||
|
|
||||||
function _beanshellTemplate(obj) {
|
function _beanshellTemplate(obj) {
|
||||||
let {requestHeaders = new Map(), requestBody = "", requestPath = "/",
|
let {requestHeaders = new Map(), requestBody = "", requestPath = "/",
|
||||||
requestMethod = "GET", protocol = "http", requestArguments = new Map(), domain = "", port = ""} = obj;
|
requestMethod = "GET", protocol = "http", requestArguments = new Map(), domain = "", port = "", requestRest = new Map()} = obj;
|
||||||
|
requestPath = replaceRestParams(requestPath, requestRest);
|
||||||
let uri = `new URIBuilder()
|
let uri = `new URIBuilder()
|
||||||
.setScheme("${protocol}")
|
.setScheme("${protocol}")
|
||||||
.setHost("${domain}")
|
.setHost("${domain}")
|
||||||
|
@ -211,8 +214,9 @@ if (response.getStatusLine().getStatusCode() == 200) {
|
||||||
|
|
||||||
function _jsTemplate(obj) {
|
function _jsTemplate(obj) {
|
||||||
let {requestHeaders = new Map(), requestBody = "", requestPath = "/",
|
let {requestHeaders = new Map(), requestBody = "", requestPath = "/",
|
||||||
requestMethod = "GET", protocol = "http", requestArguments = new Map(), domain = "", port = ""} = obj;
|
requestMethod = "GET", protocol = "http", requestArguments = new Map(), domain = "", port = "", requestRest = new Map()} = obj;
|
||||||
let url = "";
|
let url = "";
|
||||||
|
requestPath = replaceRestParams(requestPath, requestRest);
|
||||||
if (protocol && domain && port) {
|
if (protocol && domain && port) {
|
||||||
url = protocol + "://" + domain + ":" + port + requestPath;
|
url = protocol + "://" + domain + ":" + port + requestPath;
|
||||||
}
|
}
|
||||||
|
@ -251,3 +255,25 @@ while((lines = reader.readLine()) !== null) {
|
||||||
log.info(res);
|
log.info(res);
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function replaceRestParams(path, restMap) {
|
||||||
|
if (!path) {
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
let arr = path.match(/{([\w]+)}/g);
|
||||||
|
if (Array.isArray(arr) && arr.length > 0) {
|
||||||
|
arr = Array.from(new Set(arr));
|
||||||
|
for (let str of arr) {
|
||||||
|
try {
|
||||||
|
let temp = str.substr(1);
|
||||||
|
let param = temp.substring(0, temp.length - 1);
|
||||||
|
if (str && restMap.has(param)) {
|
||||||
|
path = path.replace(new RegExp(str, 'g'), restMap.get(param));
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
// nothing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue