Skip to content

Commit ef63a31

Browse files
committed
Use custom query parameter method and allow null or undefined query parameters to ignore parameters when not there
Signed-off-by: Renz <git@mihou.dev>
1 parent 794eca5 commit ef63a31

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/builder/client.ts

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,12 +90,32 @@ export function createClient<C extends ClientBuilder>(baseUrl: string, config: C
9090
fullPath += path;
9191

9292
if (request.queryParameters) {
93-
const searchParams = new URLSearchParams();
94-
for (const [key, value] of Object.entries(request.queryParameters)) {
95-
searchParams.append(key, value.toString())
93+
let params = "";
94+
for (let key in request.queryParameters) {
95+
const value = request.queryParameters[key];
96+
if (value === undefined || value === null) {
97+
continue
98+
}
99+
100+
const encodedKey = encodeURIComponent(key)
101+
if (typeof value === "string") {
102+
const param = `${encodedKey}=${encodeURIComponent(value)}`
103+
if (params.length > 0) {
104+
params += `&${param}`;
105+
} else {
106+
params += `?${param}`;
107+
}
108+
} else {
109+
const param = `${encodedKey}=${value}`
110+
if (params.length > 0) {
111+
params += `&${param}`;
112+
} else {
113+
params += `?${param}`;
114+
}
115+
}
96116
}
97-
if (searchParams.size > 0) {
98-
fullPath += ("?" + searchParams.toString())
117+
if (params.length > 0) {
118+
fullPath += params;
99119
}
100120
}
101121

src/types/http.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
} from "./builder";
1010

1111
export type QueryParameters = {
12-
[key: string]: string | number | boolean
12+
[key: string]: string | number | boolean | undefined | null
1313
}
1414

1515
export type HttpMethods = "GET" | "POST" | "PUT" | "DELETE" | "PATCH"

0 commit comments

Comments
 (0)