diff --git a/src/core/createInstance.ts b/src/core/createInstance.ts index 48af89f..2218d9a 100644 --- a/src/core/createInstance.ts +++ b/src/core/createInstance.ts @@ -1,5 +1,5 @@ import { combineURL } from '../helpers/combineURL'; -import { buildURL } from '../helpers/buildURL'; +import { transformURL } from '../helpers/transformURL'; import Axios, { AxiosRequest, AxiosRequestConfig, @@ -58,11 +58,7 @@ export function createInstance(config: AxiosRequestConfig, parent?: Axios) { const instance = context.request as AxiosInstance; instance.getUri = function getUri(config) { - const { url, params, paramsSerializer } = mergeConfig( - instance.defaults, - config, - ); - return buildURL(url, params, paramsSerializer).replace(/^\?/, ''); + return transformURL(mergeConfig(instance.defaults, config)); }; instance.create = function create(config) { return createInstance(mergeConfig(instance.defaults, config)); diff --git a/src/request/transformURL.ts b/src/helpers/transformURL.ts similarity index 62% rename from src/request/transformURL.ts rename to src/helpers/transformURL.ts index ee1b934..b847e9b 100644 --- a/src/request/transformURL.ts +++ b/src/helpers/transformURL.ts @@ -1,8 +1,8 @@ -import { isPlainObject } from '../helpers/isTypes'; -import { buildURL } from '../helpers/buildURL'; -import { combineURL } from '../helpers/combineURL'; -import { dynamicURL } from '../helpers/dynamicURL'; import { AxiosRequestConfig } from '../core/Axios'; +import { isPlainObject } from './isTypes'; +import { buildURL } from './buildURL'; +import { combineURL } from './combineURL'; +import { dynamicURL } from './dynamicURL'; export function transformURL(config: AxiosRequestConfig) { let url = combineURL(config.baseURL, config.url); diff --git a/src/request/request.ts b/src/request/request.ts index 74cb958..5b59096 100644 --- a/src/request/request.ts +++ b/src/request/request.ts @@ -1,4 +1,5 @@ import { isFunction, isPlainObject } from '../helpers/isTypes'; +import { transformURL } from '../helpers/transformURL'; import { AxiosRequestConfig, AxiosResponse, @@ -14,7 +15,6 @@ import { import { isCancelToken } from './cancel'; import { AxiosErrorResponse, createError } from './createError'; import { generateType } from './generateType'; -import { transformURL } from './transformURL'; /** * 开始请求 diff --git a/test/axios.instance.test.ts b/test/axios.instance.test.ts index 27d9133..e95bf21 100644 --- a/test/axios.instance.test.ts +++ b/test/axios.instance.test.ts @@ -160,11 +160,15 @@ describe('src/axios.ts', () => { }); test('应该可以获取 URI', () => { - expect(axios.getUri({ url: 'test' })).toBe('test'); - expect(axios.getUri({ url: 'test', params: { id: 1 } })).toBe('test?id=1'); - expect(axios.getUri({ url: 'test', paramsSerializer: () => 'id=1' })).toBe( - 'test?id=1', - ); + expect( + axios.getUri({ + baseURL: 'https://api.com', + url: '/test/:id/', + params: { + id: 1, + }, + }), + ).toBe('https://api.com/test/1/'); }); test('应该支持中间件', async () => { diff --git a/test/request/transformURL.test.ts b/test/helpers/transformURL.test.ts similarity index 94% rename from test/request/transformURL.test.ts rename to test/helpers/transformURL.test.ts index 3df99c7..95628f7 100644 --- a/test/request/transformURL.test.ts +++ b/test/helpers/transformURL.test.ts @@ -1,7 +1,7 @@ import { describe, test, expect } from 'vitest'; -import { transformURL } from '@/request/transformURL'; +import { transformURL } from '@/helpers/transformURL'; -describe('src/request/transformURL.ts', () => { +describe('src/helpers/transformURL.ts', () => { test('应该支持空配置', () => { expect(transformURL({})).toBe(''); expect(transformURL({ baseURL: 'http://api.com' })).toBe('http://api.com');