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); });