Skip to content

Commit 91b106f

Browse files
feat: add support of objects in query params
1 parent 5d9ea4f commit 91b106f

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

templates/base/http-clients/fetch-http-client.ejs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -80,20 +80,22 @@ export class HttpClient<SecurityDataType = unknown> {
8080
}
8181

8282
protected addArrayQueryParam(query: QueryParamsType, key: string) {
83-
const value = query[key];
84-
return value.map((v: any) => this.encodeQueryParam(key, v)).join("&");
83+
const value = Array.isArray(query[key])
84+
? query[key].map((value, index) => [index, value])
85+
: Object.entries(query[key]);
86+
return value.map(([arrayKey, value]: any) => this.encodeQueryParam(`${key}[${arrayKey}]`, value)).join("&");
8587
}
8688

8789
protected toQueryString(rawQuery?: QueryParamsType): string {
8890
const query = rawQuery || {};
8991
const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]);
9092
return keys
91-
.map((key) =>
92-
Array.isArray(query[key])
93-
? this.addArrayQueryParam(query, key)
94-
: this.addQueryParam(query, key),
95-
)
96-
.join("&");
93+
.map((key) =>
94+
typeof query[key] === "object" || Array.isArray(query[key])
95+
? this.addArrayQueryParam(query, key)
96+
: this.addQueryParam(query, key),
97+
)
98+
.join("&");
9799
}
98100

99101
protected addQueryParams(rawQuery?: QueryParamsType): string {

0 commit comments

Comments
 (0)