diff --git a/src/templates/core/fetch/getHeaders.hbs b/src/templates/core/fetch/getHeaders.hbs index 3d1a62c7..6808661f 100644 --- a/src/templates/core/fetch/getHeaders.hbs +++ b/src/templates/core/fetch/getHeaders.hbs @@ -2,13 +2,20 @@ async function getHeaders(options: ApiRequestOptions): Promise { const token = await resolve(options, OpenAPI.TOKEN); const username = await resolve(options, OpenAPI.USERNAME); const password = await resolve(options, OpenAPI.PASSWORD); - const defaultHeaders = await resolve(options, OpenAPI.HEADERS); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const headers = new Headers({ + const defaultHeaders = Object.entries({ Accept: 'application/json', - ...defaultHeaders, + ...additionalHeaders, ...options.headers, - }); + }) + .filter(([key, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: value, + }), {}); + + const headers = new Headers(defaultHeaders); if (isStringWithValue(token)) { headers.append('Authorization', `Bearer ${token}`); diff --git a/src/templates/core/node/getHeaders.hbs b/src/templates/core/node/getHeaders.hbs index fc6d5516..040ef27a 100644 --- a/src/templates/core/node/getHeaders.hbs +++ b/src/templates/core/node/getHeaders.hbs @@ -2,13 +2,20 @@ async function getHeaders(options: ApiRequestOptions): Promise { const token = await resolve(options, OpenAPI.TOKEN); const username = await resolve(options, OpenAPI.USERNAME); const password = await resolve(options, OpenAPI.PASSWORD); - const defaultHeaders = await resolve(options, OpenAPI.HEADERS); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const headers = new Headers({ + const defaultHeaders = Object.entries({ Accept: 'application/json', - ...defaultHeaders, + ...additionalHeaders, ...options.headers, - }); + }) + .filter(([key, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: value, + }), {}); + + const headers = new Headers(defaultHeaders); if (isStringWithValue(token)) { headers.append('Authorization', `Bearer ${token}`); diff --git a/src/templates/core/xhr/getHeaders.hbs b/src/templates/core/xhr/getHeaders.hbs index 3d1a62c7..6808661f 100644 --- a/src/templates/core/xhr/getHeaders.hbs +++ b/src/templates/core/xhr/getHeaders.hbs @@ -2,13 +2,20 @@ async function getHeaders(options: ApiRequestOptions): Promise { const token = await resolve(options, OpenAPI.TOKEN); const username = await resolve(options, OpenAPI.USERNAME); const password = await resolve(options, OpenAPI.PASSWORD); - const defaultHeaders = await resolve(options, OpenAPI.HEADERS); + const additionalHeaders = await resolve(options, OpenAPI.HEADERS); - const headers = new Headers({ + const defaultHeaders = Object.entries({ Accept: 'application/json', - ...defaultHeaders, + ...additionalHeaders, ...options.headers, - }); + }) + .filter(([key, value]) => isDefined(value)) + .reduce((headers, [key, value]) => ({ + ...headers, + [key]: value, + }), {}); + + const headers = new Headers(defaultHeaders); if (isStringWithValue(token)) { headers.append('Authorization', `Bearer ${token}`); diff --git a/src/templates/core/xhr/getResponseBody.hbs b/src/templates/core/xhr/getResponseBody.hbs index 1da88836..4dc29fb5 100644 --- a/src/templates/core/xhr/getResponseBody.hbs +++ b/src/templates/core/xhr/getResponseBody.hbs @@ -1,16 +1,18 @@ function getResponseBody(xhr: XMLHttpRequest): any { - try { - const contentType = xhr.getResponseHeader('Content-Type'); - if (contentType) { - const isJSON = contentType.toLowerCase().startsWith('application/json'); - if (isJSON) { - return JSON.parse(xhr.responseText); - } else { - return xhr.responseText; + if (xhr.status !== 204) { + try { + const contentType = xhr.getResponseHeader('Content-Type'); + if (contentType) { + const isJSON = contentType.toLowerCase().startsWith('application/json'); + if (isJSON) { + return JSON.parse(xhr.responseText); + } else { + return xhr.responseText; + } } + } catch (error) { + console.error(error); } - } catch (error) { - console.error(error); } return null; }