diff --git a/packages/toolkit/src/query/tests/utils.test.ts b/packages/toolkit/src/query/tests/utils.test.ts index 4b111b2a0..f99598a90 100644 --- a/packages/toolkit/src/query/tests/utils.test.ts +++ b/packages/toolkit/src/query/tests/utils.test.ts @@ -83,6 +83,12 @@ describe('joinUrls', () => { expect(joinUrls('', '/banana')).toBe('/banana') expect(joinUrls('', 'banana')).toBe('banana') + + expect(joinUrls('/api', '?a=1')).toBe('/api?a=1') + expect(joinUrls('/api/', '?a=1')).toBe('/api/?a=1') + + expect(joinUrls('/api', 'banana?a=1')).toBe('/api/banana?a=1') + expect(joinUrls('/api/', 'banana/?a=1')).toBe('/api/banana/?a=1') }) test('correctly joins variations of absolute urls', () => { diff --git a/packages/toolkit/src/query/utils/joinUrls.ts b/packages/toolkit/src/query/utils/joinUrls.ts index f67533861..2087351df 100644 --- a/packages/toolkit/src/query/utils/joinUrls.ts +++ b/packages/toolkit/src/query/utils/joinUrls.ts @@ -18,8 +18,9 @@ export function joinUrls( return url } + const delimiter = base.endsWith('/') || !url.startsWith('?') ? '/' : '' base = withoutTrailingSlash(base) url = withoutLeadingSlash(url) - return `${base}/${url}` + return `${base}${delimiter}${url}`; }