From 75c7d1ec504211fc03107cbcb3454b0610952374 Mon Sep 17 00:00:00 2001 From: fofolee Date: Tue, 18 Mar 2025 19:28:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E6=8E=92http=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E6=94=AF=E6=8C=81raw=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../composer/network/AxiosConfigEditor.vue | 88 +++++++------------ 1 file changed, 33 insertions(+), 55 deletions(-) diff --git a/src/components/composer/network/AxiosConfigEditor.vue b/src/components/composer/network/AxiosConfigEditor.vue index 3a9aa69..ea754b0 100644 --- a/src/components/composer/network/AxiosConfigEditor.vue +++ b/src/components/composer/network/AxiosConfigEditor.vue @@ -118,10 +118,29 @@ name="data" class="q-pa-none q-pt-sm" > - +
+
+ RAW + +
+
+ + +
+
@@ -160,7 +179,7 @@ import { defineComponent } from "vue"; import VariableInput from "components/composer/common/VariableInput.vue"; import NumberInput from "components/composer/common/NumberInput.vue"; import DictEditor from "components/composer/common/DictEditor.vue"; -import { stringifyArgv, parseFunction } from "js/composer/formatString"; +import { stringifyArgv } from "js/composer/formatString"; import { userAgent, commonHeaders, @@ -203,6 +222,7 @@ export default defineComponent({ otherHeaders: {}, params: {}, data: {}, + isReqDataRaw: false, timeout: 0, maxRedirects: 5, responseType: "json", @@ -362,9 +382,7 @@ export default defineComponent({ }, computed: { argvs() { - return ( - this.modelValue.argvs || this.parseCodeToArgvs(this.modelValue.code) - ); + return this.modelValue.argvs; }, hasRequestData() { return ["PUT", "POST", "PATCH"].includes(this.argvs.method); @@ -374,55 +392,10 @@ export default defineComponent({ }, }, methods: { - // 解析代码为参数 - parseCodeToArgvs(code) { - const argvs = window.lodashM.cloneDeep(this.defaultArgvs); - if (!code) return argvs; - const method = code.match(/axios\.(\w+)/)?.[1].toUpperCase(); - const hasData = ["PUT", "POST", "PATCH"].includes(method); - // 有请求体时,config 是第三个参数 - const configIndex = hasData ? 2 : 1; - try { - // 定义需要使用 variableInput 格式的路径 - const variableFormatPaths = [ - "arg0", // url参数 - `arg${configIndex}.params.**`, // 所有params对象下的字段 - `arg${configIndex}.headers.**`, // 所有headers对象下的字段 - `arg${configIndex}.auth.**`, // 所有认证相关字段 - `arg${configIndex}.proxy.host`, // 代理主机 - `arg${configIndex}.proxy.auth.**`, // 代理认证字段 - `!arg${configIndex}.headers.Content-Type`, // ontent-Type - ]; - if (hasData) variableFormatPaths.push(`arg1.**`); - // 返回所有解析出来的参数组成的数组 - const result = parseFunction(code, { - variableFormatPaths, - }); - if (!result) { - console.warn("axios 参数解析失败:", code); - return argvs; - } - const url = result.argvs[0] || ""; - const data = hasData ? result.argvs[1] : {}; - const config = result.argvs[hasData ? 2 : 1] || {}; - const { - "Content-Type": contentType, - "User-Agent": userAgent, - ...otherHeaders - } = config.headers; - config.headers = { - "Content-Type": contentType, - "User-Agent": userAgent, - }; - Object.assign(argvs, { url, data, method, otherHeaders, ...config }); - } catch (e) { - console.warn("axios 参数解析失败:", code); - } - return argvs; - }, // 从参数生成代码 generateCode(argvs = this.argvs) { - const { url, method, data, otherHeaders, ...restConfig } = argvs; + const { url, method, data, isReqDataRaw, otherHeaders, ...restConfig } = + argvs; restConfig.headers = { ...restConfig.headers, ...otherHeaders, @@ -497,6 +470,11 @@ export default defineComponent({ code: this.generateCode(argvs), }); }, + handleReqRawUpdate(isRaw) { + isRaw + ? this.updateArgvs("data", newVarInputVal("str")) + : this.updateArgvs("data", {}); + }, }, mounted() { const argvs = this.modelValue.argvs || this.defaultArgvs;