diff --git a/src/fetchBaseQuery.ts b/src/fetchBaseQuery.ts index 09fa4c38..f2babea3 100644 --- a/src/fetchBaseQuery.ts +++ b/src/fetchBaseQuery.ts @@ -32,7 +32,9 @@ export function fetchBaseQuery({ baseUrl }: { baseUrl?: string } = {}) { body, ...rest, }; + config.headers = new Headers(headers); + if (!config.headers.has('content-type')) { config.headers.set('content-type', 'application/json'); } @@ -42,10 +44,12 @@ export function fetchBaseQuery({ baseUrl }: { baseUrl?: string } = {}) { } url = joinUrls(baseUrl, url); + if (params) { const searchParams = new URLSearchParams(params); url += `?${searchParams.toString()}`; } + const response = await fetch(url, config); let resultData; diff --git a/src/utils/joinsUrls.test.ts b/src/utils/joinsUrls.test.ts new file mode 100644 index 00000000..2fe7d95d --- /dev/null +++ b/src/utils/joinsUrls.test.ts @@ -0,0 +1,28 @@ +import { joinUrls } from './joinUrls'; + +test('correctly joins variations relative urls', () => { + expect(joinUrls('/api/', '/banana')).toBe('/api/banana'); + expect(joinUrls('/api', '/banana')).toBe('/api/banana'); + + expect(joinUrls('/api/', 'banana')).toBe('/api/banana'); + expect(joinUrls('/api/', '/banana/')).toBe('/api/banana/'); + + expect(joinUrls('/', '/banana/')).toBe('/banana/'); + expect(joinUrls('/', 'banana/')).toBe('/banana/'); + + expect(joinUrls('/', '/banana')).toBe('/banana'); + expect(joinUrls('/', 'banana')).toBe('/banana'); + + expect(joinUrls('', '/banana')).toBe('/banana'); + expect(joinUrls('', 'banana')).toBe('banana'); +}); + +test('correctly joins variations of absolute urls', () => { + expect(joinUrls('https://apple.com', '/api/banana/')).toBe('https://apple.com/api/banana/'); + expect(joinUrls('https://apple.com', '/api/banana')).toBe('https://apple.com/api/banana'); + + expect(joinUrls('https://apple.com/', 'api/banana/')).toBe('https://apple.com/api/banana/'); + expect(joinUrls('https://apple.com/', 'api/banana')).toBe('https://apple.com/api/banana'); + + expect(joinUrls('https://apple.com/', 'api/banana/')).toBe('https://apple.com/api/banana/'); +});