mirror of
https://github.com/n8n-io/n8n.git
synced 2025-03-05 20:50:17 -08:00
* Fix issue with request body not being sent when using the new request helper
This commit is contained in:
parent
3608d132c0
commit
e3f0ee68b4
|
@ -677,6 +677,10 @@ async function proxyRequestToAxios(
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isIterator(obj: unknown): boolean {
|
||||||
|
return obj instanceof Object && Symbol.iterator in obj;
|
||||||
|
}
|
||||||
|
|
||||||
function convertN8nRequestToAxios(n8nRequest: IHttpRequestOptions): AxiosRequestConfig {
|
function convertN8nRequestToAxios(n8nRequest: IHttpRequestOptions): AxiosRequestConfig {
|
||||||
// Destructure properties with the same name first.
|
// Destructure properties with the same name first.
|
||||||
const { headers, method, timeout, auth, proxy, url } = n8nRequest;
|
const { headers, method, timeout, auth, proxy, url } = n8nRequest;
|
||||||
|
@ -716,21 +720,17 @@ function convertN8nRequestToAxios(n8nRequest: IHttpRequestOptions): AxiosRequest
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// if there is a body and it's empty (does not have properties),
|
const { body } = n8nRequest;
|
||||||
// make sure not to send anything in it as some services fail when
|
if (body) {
|
||||||
// sending GET request with empty body.
|
|
||||||
if (n8nRequest.body && Object.keys(n8nRequest.body).length) {
|
|
||||||
axiosRequest.data = n8nRequest.body;
|
|
||||||
// Let's add some useful header standards here.
|
// Let's add some useful header standards here.
|
||||||
const existingContentTypeHeaderKey = searchForHeader(axiosRequest.headers, 'content-type');
|
const existingContentTypeHeaderKey = searchForHeader(axiosRequest.headers, 'content-type');
|
||||||
if (existingContentTypeHeaderKey === undefined) {
|
if (existingContentTypeHeaderKey === undefined) {
|
||||||
|
axiosRequest.headers = axiosRequest.headers || {};
|
||||||
// We are only setting content type headers if the user did
|
// We are only setting content type headers if the user did
|
||||||
// not set it already manually. We're not overriding, even if it's wrong.
|
// not set it already manually. We're not overriding, even if it's wrong.
|
||||||
if (axiosRequest.data instanceof FormData) {
|
if (body instanceof FormData) {
|
||||||
axiosRequest.headers = axiosRequest.headers || {};
|
|
||||||
axiosRequest.headers['Content-Type'] = 'multipart/form-data';
|
axiosRequest.headers['Content-Type'] = 'multipart/form-data';
|
||||||
} else if (axiosRequest.data instanceof URLSearchParams) {
|
} else if (body instanceof URLSearchParams) {
|
||||||
axiosRequest.headers = axiosRequest.headers || {};
|
|
||||||
axiosRequest.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
axiosRequest.headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
||||||
}
|
}
|
||||||
} else if (
|
} else if (
|
||||||
|
@ -738,6 +738,12 @@ function convertN8nRequestToAxios(n8nRequest: IHttpRequestOptions): AxiosRequest
|
||||||
) {
|
) {
|
||||||
axiosRequest.data = new URLSearchParams(n8nRequest.body as Record<string, string>);
|
axiosRequest.data = new URLSearchParams(n8nRequest.body as Record<string, string>);
|
||||||
}
|
}
|
||||||
|
// if there is a body and it's empty (does not have properties),
|
||||||
|
// make sure not to send anything in it as some services fail when
|
||||||
|
// sending GET request with empty body.
|
||||||
|
if (isIterator(body) || Object.keys(body).length > 0) {
|
||||||
|
axiosRequest.data = body;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n8nRequest.json) {
|
if (n8nRequest.json) {
|
||||||
|
|
Loading…
Reference in a new issue