@@ -270,24 +270,31 @@ function base64(str: string): string {
270270}
271271
272272function getQueryString(params: Record<string, any>): string {
273- const qs: string[] = [] ;
273+ const searchParams = new URLSearchParams() ;
274274
275- const append = (key: string, value: any) => {
276- qs.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
277- };
278-
279- Object.entries(params)
280- .filter(([_, value]) => isDefined(value))
281- .forEach(([key, value]) => {
275+ const process = (key:string, value: any) => {
276+ if (isDefined(value)) {
282277 if (Array.isArray(value)) {
283- value.forEach(v => append(key, v));
278+ value.forEach(v => {
279+ process(key, v);
280+ });
281+ } else if (typeof value === 'object') {
282+ Object.entries(value).forEach(([k, v]) => {
283+ process(\`\${key}[\${k}]\`, v);
284+ });
284285 } else {
285- append(key, value);
286+ searchParams. append(key, value);
286287 }
287- });
288+ }
289+ };
290+
291+ Object.entries(params).forEach(([key, value]) => {
292+ process(key, value);
293+ });
288294
289- if (qs.length > 0) {
290- return \`?\${qs.join('&')}\`;
295+ const query = searchParams.toString();
296+ if (query.length) {
297+ return \`?\${query}\`;
291298 }
292299
293300 return '';
@@ -307,7 +314,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
307314 if (options.formData) {
308315 const formData = new FormData();
309316
310- const append = (key: string, value: any) => {
317+ const process = (key: string, value: any) => {
311318 if (isString(value) || isBlob(value)) {
312319 formData.append(key, value);
313320 } else {
@@ -321,7 +328,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
321328 if (Array.isArray(value)) {
322329 value.forEach(v => append(key, v));
323330 } else {
324- append (key, value);
331+ process (key, value);
325332 }
326333 });
327334
@@ -3112,24 +3119,31 @@ function base64(str: string): string {
31123119}
31133120
31143121function getQueryString(params: Record<string, any>): string {
3115- const qs: string[] = [] ;
3122+ const searchParams = new URLSearchParams() ;
31163123
3117- const append = (key: string, value: any) => {
3118- qs.push(\`\${encodeURIComponent(key)}=\${encodeURIComponent(String(value))}\`);
3119- };
3120-
3121- Object.entries(params)
3122- .filter(([_, value]) => isDefined(value))
3123- .forEach(([key, value]) => {
3124+ const process = (key:string, value: any) => {
3125+ if (isDefined(value)) {
31243126 if (Array.isArray(value)) {
3125- value.forEach(v => append(key, v));
3127+ value.forEach(v => {
3128+ process(key, v);
3129+ });
3130+ } else if (typeof value === 'object') {
3131+ Object.entries(value).forEach(([k, v]) => {
3132+ process(\`\${key}[\${k}]\`, v);
3133+ });
31263134 } else {
3127- append(key, value);
3135+ searchParams. append(key, value);
31283136 }
3129- });
3137+ }
3138+ };
3139+
3140+ Object.entries(params).forEach(([key, value]) => {
3141+ process(key, value);
3142+ });
31303143
3131- if (qs.length > 0) {
3132- return \`?\${qs.join('&')}\`;
3144+ const query = searchParams.toString();
3145+ if (query.length) {
3146+ return \`?\${query}\`;
31333147 }
31343148
31353149 return '';
@@ -3149,7 +3163,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
31493163 if (options.formData) {
31503164 const formData = new FormData();
31513165
3152- const append = (key: string, value: any) => {
3166+ const process = (key: string, value: any) => {
31533167 if (isString(value) || isBlob(value)) {
31543168 formData.append(key, value);
31553169 } else {
@@ -3163,7 +3177,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
31633177 if (Array.isArray(value)) {
31643178 value.forEach(v => append(key, v));
31653179 } else {
3166- append (key, value);
3180+ process (key, value);
31673181 }
31683182 });
31693183
0 commit comments