Skip to content

Commit 9837d28

Browse files
chore: Do not serialise null/undefined values for GET calls (#293)
1 parent a8d4cda commit 9837d28

File tree

2 files changed

+34
-4
lines changed

2 files changed

+34
-4
lines changed

src/restClient.axios.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,32 @@ describe('axios tests without mocking', () => {
1717
})
1818
expect(requestUri).toEqual('https://api.todoist.com/rest/v2/tasks?ids=12345%2C56789')
1919
})
20+
21+
test('GET calls do not serialise null values', () => {
22+
const requestUri = axios.create().getUri({
23+
method: 'GET',
24+
baseURL: DEFAULT_BASE_URI,
25+
params: {
26+
ids: null,
27+
},
28+
paramsSerializer: {
29+
serialize: paramsSerializer,
30+
},
31+
})
32+
expect(requestUri).toEqual('https://api.todoist.com/rest/v2/tasks')
33+
})
34+
35+
test('GET calls do not serialise undefined values', () => {
36+
const requestUri = axios.create().getUri({
37+
method: 'GET',
38+
baseURL: DEFAULT_BASE_URI,
39+
params: {
40+
ids: undefined,
41+
},
42+
paramsSerializer: {
43+
serialize: paramsSerializer,
44+
},
45+
})
46+
expect(requestUri).toEqual('https://api.todoist.com/rest/v2/tasks')
47+
})
2048
})

src/restClient.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ export function paramsSerializer(params: Record<string, unknown>) {
1212

1313
Object.keys(params).forEach((key) => {
1414
const value = params[key]
15-
if (Array.isArray(value)) {
16-
qs.append(key, value.join(','))
17-
} else {
18-
qs.append(key, String(value))
15+
if (value != null) {
16+
if (Array.isArray(value)) {
17+
qs.append(key, value.join(','))
18+
} else {
19+
qs.append(key, String(value))
20+
}
1921
}
2022
})
2123

0 commit comments

Comments
 (0)