diff --git a/index.d.ts b/index.d.ts index 9887119bed..27dbd1a479 100644 --- a/index.d.ts +++ b/index.d.ts @@ -122,6 +122,10 @@ export interface ParamEncoder { (value: any, defaultEncoder: (value: any) => any): any; } +export interface CustomParamsSerializer { + (params: Record, options?: ParamsSerializerOptions): string; +} + export interface ParamsSerializerOptions extends SerializerOptions { encode?: ParamEncoder; } @@ -134,7 +138,7 @@ export interface AxiosRequestConfig { transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[]; headers?: AxiosRequestHeaders; params?: any; - paramsSerializer?: ParamsSerializerOptions; + paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer; data?: D; timeout?: number; timeoutErrorMessage?: string; diff --git a/lib/core/Axios.js b/lib/core/Axios.js index ef7e810129..b9ea3e3a2b 100644 --- a/lib/core/Axios.js +++ b/lib/core/Axios.js @@ -59,6 +59,10 @@ Axios.prototype.request = function request(configOrUrl, config) { }, false); } + var paramsSerializer = config.paramsSerializer; + + utils.isFunction(paramsSerializer) && (config.paramsSerializer = {serialize: paramsSerializer}); + // filter out skipped interceptors var requestInterceptorChain = []; var synchronousRequestInterceptors = true;