@@ -270,24 +270,31 @@ function base64(str: string): string {
270
270
}
271
271
272
272
function getQueryString(params: Record<string, any>): string {
273
- const qs: string[] = [] ;
273
+ const searchParams = new URLSearchParams() ;
274
274
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)) {
282
277
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
+ });
284
285
} else {
285
- append(key, value);
286
+ searchParams. append(key, value);
286
287
}
287
- });
288
+ }
289
+ };
290
+
291
+ Object.entries(params).forEach(([key, value]) => {
292
+ process(key, value);
293
+ });
288
294
289
- if (qs.length > 0) {
290
- return \`?\${qs.join('&')}\`;
295
+ const query = searchParams.toString();
296
+ if (query.length) {
297
+ return \`?\${query}\`;
291
298
}
292
299
293
300
return '';
@@ -307,7 +314,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
307
314
if (options.formData) {
308
315
const formData = new FormData();
309
316
310
- const append = (key: string, value: any) => {
317
+ const process = (key: string, value: any) => {
311
318
if (isString(value) || isBlob(value)) {
312
319
formData.append(key, value);
313
320
} else {
@@ -321,7 +328,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
321
328
if (Array.isArray(value)) {
322
329
value.forEach(v => append(key, v));
323
330
} else {
324
- append (key, value);
331
+ process (key, value);
325
332
}
326
333
});
327
334
@@ -3112,24 +3119,31 @@ function base64(str: string): string {
3112
3119
}
3113
3120
3114
3121
function getQueryString(params: Record<string, any>): string {
3115
- const qs: string[] = [] ;
3122
+ const searchParams = new URLSearchParams() ;
3116
3123
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)) {
3124
3126
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
+ });
3126
3134
} else {
3127
- append(key, value);
3135
+ searchParams. append(key, value);
3128
3136
}
3129
- });
3137
+ }
3138
+ };
3139
+
3140
+ Object.entries(params).forEach(([key, value]) => {
3141
+ process(key, value);
3142
+ });
3130
3143
3131
- if (qs.length > 0) {
3132
- return \`?\${qs.join('&')}\`;
3144
+ const query = searchParams.toString();
3145
+ if (query.length) {
3146
+ return \`?\${query}\`;
3133
3147
}
3134
3148
3135
3149
return '';
@@ -3149,7 +3163,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
3149
3163
if (options.formData) {
3150
3164
const formData = new FormData();
3151
3165
3152
- const append = (key: string, value: any) => {
3166
+ const process = (key: string, value: any) => {
3153
3167
if (isString(value) || isBlob(value)) {
3154
3168
formData.append(key, value);
3155
3169
} else {
@@ -3163,7 +3177,7 @@ function getFormData(options: ApiRequestOptions): FormData | undefined {
3163
3177
if (Array.isArray(value)) {
3164
3178
value.forEach(v => append(key, v));
3165
3179
} else {
3166
- append (key, value);
3180
+ process (key, value);
3167
3181
}
3168
3182
});
3169
3183
0 commit comments