diff --git a/index.js b/index.js index d54ad3c..5f45fab 100644 --- a/index.js +++ b/index.js @@ -52,9 +52,19 @@ module.exports = (app, options) => { } else if (event.queryStringParameters) { Object.keys(event.queryStringParameters).forEach((q) => { query[decodeURIComponent(q)] = decodeURIComponent(event.queryStringParameters[q]) + if (typeof query[decodeURIComponent(q)] === 'string' && query[decodeURIComponent(q)].indexOf(',') > 0) { + query[decodeURIComponent(q)] = query[decodeURIComponent(q)].split(',') + } }) } } else { + if (event.queryStringParameters) { + Object.keys(event.queryStringParameters).forEach((k) => { + if (typeof event.queryStringParameters[k] === 'string' && event.queryStringParameters[k].indexOf(',') > 0) { + event.queryStringParameters[k] = event.queryStringParameters[k].split(',') + } + }) + } Object.assign(query, event.multiValueQueryStringParameters || event.queryStringParameters) } const headers = Object.assign({}, event.headers) diff --git a/test/basic.test.js b/test/basic.test.js index ec4d402..fa43915 100644 --- a/test/basic.test.js +++ b/test/basic.test.js @@ -184,6 +184,26 @@ test('GET with multi-value query params', async (t) => { t.equal(ret.body, '{"foo":["qux","bar"]}') }) +test('GET with multi-value query params (queryStringParameters)', async (t) => { + t.plan(2) + + const app = fastify() + app.get('/test', async (request, reply) => { + reply.send(request.query) + }) + const proxy = awsLambdaFastify(app) + + const ret = await proxy({ + httpMethod: 'GET', + path: '/test', + queryStringParameters: { + foo: 'qux,bar' + } + }) + t.equal(ret.statusCode, 200) + t.equal(ret.body, '{"foo":["qux","bar"]}') +}) + test('GET with double encoded query value', async (t) => { t.plan(2)