Skip to content

Commit c353984

Browse files
edvineriksonfwang
andauthored
Fix duplicated query params being sent to next from apigw v1 events (#101)
* Update event-mapper.ts v1 event contain all params in multiValueQueryStringParameters * server: handle duplicate API Gateway REST API query string --------- Co-authored-by: Frank <[email protected]>
1 parent 0cc3b93 commit c353984

File tree

2 files changed

+22
-15
lines changed

2 files changed

+22
-15
lines changed

.changeset/afraid-mirrors-joke.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"open-next": patch
3+
---
4+
5+
server: handle duplicate API Gateway REST API query string

packages/open-next/src/adapters/event-mapper.ts

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -231,22 +231,24 @@ function normalizeAPIGatewayProxyEventV2Body(
231231
function normalizeAPIGatewayProxyEventQueryParams(
232232
event: APIGatewayProxyEvent
233233
): string {
234+
// Note that the same query string values are returned in both
235+
// "multiValueQueryStringParameters" and "queryStringParameters".
236+
// We only need to use one of them.
237+
// For example:
238+
// "?name=foo" appears in the event object as
239+
// {
240+
// ...
241+
// queryStringParameters: { name: 'foo' },
242+
// multiValueQueryStringParameters: { name: [ 'foo' ] },
243+
// ...
244+
// }
234245
const params = new URLSearchParams();
235-
if (event.multiValueQueryStringParameters) {
236-
for (const [key, value] of Object.entries(
237-
event.multiValueQueryStringParameters
238-
)) {
239-
if (value !== undefined) {
240-
for (const v of value) {
241-
params.append(key, v);
242-
}
243-
}
244-
}
245-
}
246-
if (event.queryStringParameters) {
247-
for (const [key, value] of Object.entries(event.queryStringParameters)) {
248-
if (value !== undefined) {
249-
params.append(key, value);
246+
for (const [key, value] of Object.entries(
247+
event.multiValueQueryStringParameters || {}
248+
)) {
249+
if (value !== undefined) {
250+
for (const v of value) {
251+
params.append(key, v);
250252
}
251253
}
252254
}

0 commit comments

Comments
 (0)