mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-24 20:24:05 -08:00
fix(HTTP Request Node): Duplicate key names support for form data (#9040)
Co-authored-by: Marcus <marcus@n8n.io>
This commit is contained in:
parent
58518b684b
commit
3e231dbfe6
|
@ -7,7 +7,13 @@ import type {
|
|||
|
||||
import set from 'lodash/set';
|
||||
|
||||
export type BodyParameter = { name: string; value: string };
|
||||
import FormData from 'form-data';
|
||||
|
||||
export type BodyParameter = {
|
||||
name: string;
|
||||
value: string;
|
||||
parameterType?: 'formBinaryData' | 'formData';
|
||||
};
|
||||
|
||||
export type IAuthDataSanitizeKeys = {
|
||||
[key: string]: string[];
|
||||
|
@ -168,6 +174,22 @@ export const prepareRequestBody = async (
|
|||
set(result, entry.name, entry.value);
|
||||
return result;
|
||||
}, Promise.resolve({}));
|
||||
} else if (bodyType === 'multipart-form-data' && version >= 4.2) {
|
||||
const formData = new FormData();
|
||||
|
||||
for (const parameter of parameters) {
|
||||
if (parameter.parameterType === 'formBinaryData') {
|
||||
const entry = await defaultReducer({}, parameter);
|
||||
const key = Object.keys(entry)[0];
|
||||
const data = entry[key] as { value: Buffer; options: FormData.AppendOptions };
|
||||
formData.append(key, data.value, data.options);
|
||||
continue;
|
||||
}
|
||||
|
||||
formData.append(parameter.name, parameter.value);
|
||||
}
|
||||
|
||||
return formData;
|
||||
} else {
|
||||
return await reduceAsync(parameters, defaultReducer);
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ export class HttpRequest extends VersionedNodeType {
|
|||
group: ['output'],
|
||||
subtitle: '={{$parameter["requestMethod"] + ": " + $parameter["url"]}}',
|
||||
description: 'Makes an HTTP request and returns the response data',
|
||||
defaultVersion: 4.1,
|
||||
defaultVersion: 4.2,
|
||||
};
|
||||
|
||||
const nodeVersions: IVersionedNodeType['nodeVersions'] = {
|
||||
|
@ -23,6 +23,7 @@ export class HttpRequest extends VersionedNodeType {
|
|||
3: new HttpRequestV3(baseDescription),
|
||||
4: new HttpRequestV3(baseDescription),
|
||||
4.1: new HttpRequestV3(baseDescription),
|
||||
4.2: new HttpRequestV3(baseDescription),
|
||||
};
|
||||
|
||||
super(nodeVersions, baseDescription);
|
||||
|
|
|
@ -49,7 +49,7 @@ export class HttpRequestV3 implements INodeType {
|
|||
this.description = {
|
||||
...baseDescription,
|
||||
subtitle: '={{$parameter["method"] + ": " + $parameter["url"]}}',
|
||||
version: [3, 4, 4.1],
|
||||
version: [3, 4, 4.1, 4.2],
|
||||
defaults: {
|
||||
name: 'HTTP Request',
|
||||
color: '#0004F5',
|
||||
|
|
Loading…
Reference in a new issue