diff --git a/react-openapi/api/client.ts b/react-openapi/api/client.ts index a7f8aef..97abc9e 100644 --- a/react-openapi/api/client.ts +++ b/react-openapi/api/client.ts @@ -7,6 +7,28 @@ import { createApiClient } from "../../react-auth"; let _api: AxiosInstance | null = null; let _auth: AxiosInstance | null = null; +function withParamsSerializer(instance: AxiosInstance): AxiosInstance { + instance.defaults.paramsSerializer = { + serialize: (params) => { + const searchParams = new URLSearchParams(); + + Object.entries(params).forEach(([key, value]) => { + if (Array.isArray(value)) { + value.forEach((v) => { + searchParams.append(key, String(v)); // NO [] + }); + } else if (value !== undefined && value !== null) { + searchParams.append(key, String(value)); + } + }); + + return searchParams.toString(); + }, + }; + + return instance; +} + export const api = { get: (...args: Parameters) => { if (!_api) throw new Error("API client not initialized"); @@ -38,6 +60,6 @@ export const auth = { }; export function initializeApiClients(baseUrl: string, authBaseUrl: string) { - _api = createApiClient(baseUrl); - _auth = createApiClient(authBaseUrl); + _api = withParamsSerializer(createApiClient(baseUrl)); + _auth = withParamsSerializer(createApiClient(authBaseUrl)); }