feat:http数据集完善请求脚本配置

main
liu.shiyi 2 years ago
parent a4163389c1
commit 7b9e17dc9f

@ -307,16 +307,6 @@
</el-col>
</el-row>
</el-form-item>
<el-form-item
label="请求脚本"
prop="requestScript"
>
<codemirror
v-model.trim="dataForm.config.requestScript"
:options="codemirrorOption"
class="code"
/>
</el-form-item>
<el-form-item
v-if="dataForm.config.method === 'post'"
label="请求体"
@ -330,6 +320,16 @@
clearable
/>
</el-form-item>
<el-form-item
label="请求脚本"
prop="requestScript"
>
<codemirror
v-model.trim="dataForm.config.requestScript"
:options="codemirrorOption"
class="code"
/>
</el-form-item>
<el-form-item
label="响应脚本"
prop="responseScript"
@ -901,12 +901,10 @@ export default {
acc[cur.name] = cur.value
return acc
}, {})
// url ${xxx} ${params.xxx}
const str = string.replace(/\$\{(\w+)\}/g, (match, p1) => {
return '${params.' + p1 + '}'
})
const transformStr = ''
// ${}, 使eval
eval('transformStr = `' + str + '`')
@ -998,6 +996,7 @@ export default {
//
//
if (this.dataForm.config.requestType === 'front') {
this.replaceParams(this.dataForm.config.paramsList)
axiosFormatting({ ...this.newDataForm.config }).then((res) => {
this.dataPreviewList = res.list
})

@ -18,7 +18,14 @@ export default function axiosFormatting (customConfig) {
* config.headers['token'] = sessionStorage.getItem('token') || ''
*/
// 执行请求脚本
// https://mock.presstime.cn/mock/64bf8a00ce1b0ea640809069/test_copy_copy_copy/httpData?token=123&ss=ss
const req = { ...config, urlKey: {} }
eval(customConfig.requestScript)
for (const key in req.urlKey) {
customConfig.url = replaceUrlParam(customConfig.url, key, req.urlKey[key])
}
config = { ...config, ...req, url: customConfig.url }
console.log(config.url)
return config
}, error => {
// 对请求错误做些什么
@ -45,6 +52,9 @@ export default function axiosFormatting (customConfig) {
}
})
const body = {}
const pattern = /(body\.\w+)=(\w+)/g
const replacement = "$1='$2'"
customConfig.body = customConfig.body.replace(pattern, replacement)
eval(customConfig.body)
return new Promise((resolve, reject) => {
instance({
@ -59,11 +69,13 @@ export default function axiosFormatting (customConfig) {
})
})
}
// 数组转化为对象
function arrToObject (list) {
const obj = {}
list.forEach(item => {
obj[item.key] = item.value
})
return obj
// 动态替换url后面参数的值
function replaceUrlParam (url, paramName, paramValue) {
const regex = new RegExp(`([?&])${paramName}=.*?(&|$)`, 'i')
const separator = url.indexOf('?') !== -1 ? '&' : '?'
if (url.match(regex)) {
return url.replace(regex, `$1${paramName}=${paramValue}$2`)
} else {
return `${url}${separator}${paramName}=${paramValue}`
}
}

Loading…
Cancel
Save