From 800e5ec97f2f288595f5ddf417b524d506167853 Mon Sep 17 00:00:00 2001 From: Kaito Udagawa Date: Sun, 11 Jul 2021 06:51:35 +0900 Subject: [PATCH] :zap: Add support of array in querystring (#1914) * :zap: Add support of array in querystring In the HTTP Request node, a parameter that appeared multiple times with the same name will be converted into an array. Any parameters that appeared only once will be kept in the form of a string for backward compatibility. * :zap: Prefer spread operator --- packages/nodes-base/nodes/HttpRequest.node.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/nodes-base/nodes/HttpRequest.node.ts b/packages/nodes-base/nodes/HttpRequest.node.ts index ae26e3dd9..7e4292e6c 100644 --- a/packages/nodes-base/nodes/HttpRequest.node.ts +++ b/packages/nodes-base/nodes/HttpRequest.node.ts @@ -811,8 +811,23 @@ export class HttpRequest implements INodeType { // @ts-ignore requestOptions[optionName] = {}; for (const parameterData of setUiParameter!.parameter as IDataObject[]) { - // @ts-ignore - requestOptions[optionName][parameterData!.name as string] = parameterData!.value; + const parameterDataName = parameterData!.name as string; + const newValue = parameterData!.value; + if (optionName === 'qs') { + const computeNewValue = (oldValue: unknown) => { + if (typeof oldValue === 'string') { + return [oldValue, newValue]; + } else if (Array.isArray(oldValue)) { + return [...oldValue, newValue]; + } else { + return newValue; + } + }; + requestOptions[optionName][parameterDataName] = computeNewValue(requestOptions[optionName][parameterDataName]); + } else { + // @ts-ignore + requestOptions[optionName][parameterDataName] = newValue; + } } } }