!51 1、接口请求参数js动态获取

Merge pull request !51 from 潘潘/dev
This commit is contained in:
奔跑的面条 2022-09-22 11:47:00 +00:00 committed by Gitee
commit 4d68a81ab4
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

View File

@ -80,6 +80,32 @@ export const http = (type?: RequestHttpEnum) => {
return get return get
} }
} }
const prefix = 'javascript:'
// 对输入字符进行转义处理
export const translateStr = (target: string | object) => {
if (typeof target === 'string') {
if (target.startsWith(prefix)) {
const funcStr = target.split(prefix)[1]
let result;
try {
result = new Function(`${funcStr}`)()
} catch (error) {
console.log(error)
window['$message'].error('js内容解析有误')
}
return result
} else {
return target
}
}
for (const key in target) {
if (Object.prototype.hasOwnProperty.call(target, key)) {
const subTarget = (target as any)[key];
(target as any)[key] = translateStr(subTarget)
}
}
return target
}
/** /**
* * * *
@ -125,15 +151,17 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
} }
// 处理头部 // 处理头部
const headers: RequestParamsObjType = { let headers: RequestParamsObjType = {
...globalRequestParams.Header, ...globalRequestParams.Header,
...targetRequestParams.Header, ...targetRequestParams.Header,
} }
headers = translateStr(headers)
// data 参数 // data 参数
let data: RequestParamsObjType | FormData | string = {} let data: RequestParamsObjType | FormData | string = {}
// params 参数 // params 参数
let params: RequestParamsObjType = targetRequestParams.Params let params: RequestParamsObjType = { ...targetRequestParams.Params }
params = translateStr(params)
// form 类型处理 // form 类型处理
let formData: FormData = new FormData() let formData: FormData = new FormData()
formData.set('default', 'defaultData') formData.set('default', 'defaultData')
@ -145,20 +173,20 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
case RequestBodyEnum.JSON: case RequestBodyEnum.JSON:
headers['Content-Type'] = ContentTypeEnum.JSON headers['Content-Type'] = ContentTypeEnum.JSON
data = JSON.parse(targetRequestParams.Body['json']) data = translateStr(JSON.parse(targetRequestParams.Body['json']))
// json 赋值给 data // json 赋值给 data
break break
case RequestBodyEnum.XML: case RequestBodyEnum.XML:
headers['Content-Type'] = ContentTypeEnum.XML headers['Content-Type'] = ContentTypeEnum.XML
// xml 字符串赋值给 data // xml 字符串赋值给 data
data = targetRequestParams.Body['xml'] data = translateStr(targetRequestParams.Body['xml'])
break break
case RequestBodyEnum.X_WWW_FORM_URLENCODED: case RequestBodyEnum.X_WWW_FORM_URLENCODED:
headers['Content-Type'] = ContentTypeEnum.FORM_URLENCODED headers['Content-Type'] = ContentTypeEnum.FORM_URLENCODED
const bodyFormData = targetRequestParams.Body['x-www-form-urlencoded'] const bodyFormData = targetRequestParams.Body['x-www-form-urlencoded']
for (const i in bodyFormData) formData.set(i, bodyFormData[i]) for (const i in bodyFormData) formData.set(i, translateStr(bodyFormData[i]))
// FormData 赋值给 data // FormData 赋值给 data
data = formData data = formData
break break
@ -167,7 +195,7 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
headers['Content-Type'] = ContentTypeEnum.FORM_DATA headers['Content-Type'] = ContentTypeEnum.FORM_DATA
const bodyFormUrlencoded = targetRequestParams.Body['form-data'] const bodyFormUrlencoded = targetRequestParams.Body['form-data']
for (const i in bodyFormUrlencoded) { for (const i in bodyFormUrlencoded) {
formData.set(i, bodyFormUrlencoded[i]) formData.set(i, translateStr(bodyFormUrlencoded[i]))
} }
// FormData 赋值给 data // FormData 赋值给 data
data = formData data = formData
@ -180,11 +208,17 @@ export const customizeHttp = (targetParams: RequestConfigType, globalParams: Req
data = requestSQLContent data = requestSQLContent
} }
try {
const url = (new Function("return `" + `${requestOriginUrl}${requestUrl}`.trim() + "`"))();
return axiosInstance({ return axiosInstance({
url: `${requestOriginUrl}${requestUrl}`, url,
method: requestHttpType, method: requestHttpType,
data, data,
params, params,
headers headers
}) })
} catch (error) {
console.log(error)
window['$message'].error('URL地址格式有误')
}
} }