From a8851f76f57fc830888b5920d7eda0cc1896b11b Mon Sep 17 00:00:00 2001 From: Aleksej Kozlov Date: Mon, 3 Mar 2025 20:48:10 +0200 Subject: [PATCH] feat: add support of objects in query params --- .../base/http-clients/fetch-http-client.ejs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/templates/base/http-clients/fetch-http-client.ejs b/templates/base/http-clients/fetch-http-client.ejs index 1b98b021..d2359a13 100644 --- a/templates/base/http-clients/fetch-http-client.ejs +++ b/templates/base/http-clients/fetch-http-client.ejs @@ -81,20 +81,22 @@ export class HttpClient { } protected addArrayQueryParam(query: QueryParamsType, key: string) { - const value = query[key]; - return value.map((v: any) => this.encodeQueryParam(key, v)).join("&"); + const value = Array.isArray(query[key]) + ? query[key].map((value, index) => [index, value]) + : Object.entries(query[key]); + return value.map(([arrayKey, value]: any) => this.encodeQueryParam(`${key}[${arrayKey}]`, value)).join("&"); } protected toQueryString(rawQuery?: QueryParamsType): string { const query = rawQuery || {}; const keys = Object.keys(query).filter((key) => "undefined" !== typeof query[key]); return keys - .map((key) => - Array.isArray(query[key]) - ? this.addArrayQueryParam(query, key) - : this.addQueryParam(query, key), - ) - .join("&"); + .map((key) => + typeof query[key] === "object" || Array.isArray(query[key]) + ? this.addArrayQueryParam(query, key) + : this.addQueryParam(query, key), + ) + .join("&"); } protected addQueryParams(rawQuery?: QueryParamsType): string {