From 445e9e7757ef9e7f1fb3d325f2a3ba5c06481376 Mon Sep 17 00:00:00 2001 From: 13659257719 <819781841@qq.com> Date: Tue, 5 Dec 2023 19:48:12 +0800 Subject: [PATCH] =?UTF-8?q?[inula-request]=20=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=20params=20=E5=8F=82=E6=95=B0=E4=B8=AD=20val?= =?UTF-8?q?ue=20=E4=B8=BA=E6=95=B0=E7=BB=84=E7=9A=84=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inula-request/src/utils/commonUtils/utils.ts | 13 ++++++++++++- .../utils/commonUtils/objectToQueryString.test.ts | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/inula-request/src/utils/commonUtils/utils.ts b/packages/inula-request/src/utils/commonUtils/utils.ts index 59ac6354..0096c66a 100644 --- a/packages/inula-request/src/utils/commonUtils/utils.ts +++ b/packages/inula-request/src/utils/commonUtils/utils.ts @@ -386,7 +386,18 @@ const convertToCamelCase = (str: string) => { function objectToQueryString(obj: Record) { return Object.keys(obj) - .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(obj[key])) + .map(key => { + // params 中 value 为数组时需特殊处理,如:{ key: [1, 2, 3] } -> key[]=1&key[]=2&key[]=3 + if (Array.isArray(obj[key])) { + let urlPart = ''; + obj[key].forEach((value: string) => { + urlPart = `${urlPart}${key}[]=${value}&`; + return urlPart; + }); + return urlPart.slice(0, -1); + } + return encodeURIComponent(key) + '=' + encodeURIComponent(obj[key]); + }) .join('&'); } diff --git a/packages/inula-request/tests/unitTest/utils/commonUtils/objectToQueryString.test.ts b/packages/inula-request/tests/unitTest/utils/commonUtils/objectToQueryString.test.ts index ea1c89ec..db98f676 100644 --- a/packages/inula-request/tests/unitTest/utils/commonUtils/objectToQueryString.test.ts +++ b/packages/inula-request/tests/unitTest/utils/commonUtils/objectToQueryString.test.ts @@ -53,7 +53,7 @@ describe('objectToQueryString function', () => { key5: { a: 'b' }, }; const expectedResult = - 'key1=string&key2=42&key3=true&key4=1%2C2%2C3&key5=%5Bobject%20Object%5D'; + 'key1=string&key2=42&key3=true&key4[]=1&key4[]=2&key4[]=3&key5=%5Bobject%20Object%5D'; const result = utils.objectToQueryString(input); expect(result).toBe(expectedResult); });