From 4e0dc75e10c49667220b3107d81dddcc0eed7ddb Mon Sep 17 00:00:00 2001 From: Caleb Mackey Date: Fri, 1 Apr 2022 12:54:17 -0500 Subject: [PATCH 1/2] fix(fetcher): do not send json content type with empty body --- src/fetcher.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fetcher.ts b/src/fetcher.ts index 80a4415b..be2d377d 100644 --- a/src/fetcher.ts +++ b/src/fetcher.ts @@ -98,7 +98,7 @@ function mergeRequestInit( ): RequestInit { const headers = new Headers(first?.headers) const other = new Headers(second?.headers) - + for (const key of other.keys()) { const value = other.get(key) if (value != null) { @@ -113,7 +113,7 @@ function getFetchParams(request: Request) { const path = getPath(request.path, payload) const query = getQuery(request.method, payload, request.queryParams) - const headers = getHeaders(request.init?.headers) + const headers = sendBody(request.method) ? getHeaders(request.init?.headers): new Headers(request.init?.headers) const url = request.baseUrl + path + query const init = { From b6127f5c794a0e193e1c7065dd0c0f83bc88d035 Mon Sep 17 00:00:00 2001 From: Caleb Mackey Date: Fri, 1 Apr 2022 12:55:41 -0500 Subject: [PATCH 2/2] test: only check json content type headers with valid body --- test/fetch.test.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/test/fetch.test.ts b/test/fetch.test.ts index 6fb17038..f8494552 100644 --- a/test/fetch.test.ts +++ b/test/fetch.test.ts @@ -23,7 +23,11 @@ describe('fetch', () => { }) const expectedHeaders = { - authorization: 'Bearer token', + authorization: 'Bearer token' + } + + const expectedHeadersWithBody = { + ...expectedHeaders, 'content-type': 'application/json', accept: 'application/json', } @@ -60,7 +64,7 @@ describe('fetch', () => { expect(data.params).toEqual({ id: '1' }) expect(data.body).toEqual({ list: ['b', 'c'] }) expect(data.query).toEqual({}) - expect(data.headers).toEqual(expectedHeaders) + expect(data.headers).toEqual(expectedHeadersWithBody) }) }) @@ -80,7 +84,7 @@ describe('fetch', () => { expect(data.params).toEqual({ id: '1' }) expect(data.body).toEqual({ list: ['b', 'c'] }) expect(data.query).toEqual({ scalar: 'a' }) - expect(data.headers).toEqual(expectedHeaders) + expect(data.headers).toEqual(expectedHeadersWithBody) }) })