2
0
mirror of https://github.com/tenrok/axios.git synced 2026-05-15 11:59:42 +03:00

fix(params): re-added the ability to set the function as paramsSerializer config; (#5633)

This commit is contained in:
Dmitriy Mozgovoy
2023-04-05 19:44:36 +03:00
committed by GitHub
parent e7decef6a9
commit a56c866120
4 changed files with 27 additions and 7 deletions
+1 -1
View File
@@ -370,7 +370,7 @@ declare namespace axios {
transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[];
headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders;
params?: any;
paramsSerializer?: ParamsSerializerOptions;
paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer;
data?: D;
timeout?: Milliseconds;
timeoutErrorMessage?: string;
Vendored
+1 -1
View File
@@ -311,7 +311,7 @@ export interface AxiosRequestConfig<D = any> {
transformResponse?: AxiosResponseTransformer | AxiosResponseTransformer[];
headers?: (RawAxiosRequestHeaders & MethodsHeaders) | AxiosHeaders;
params?: any;
paramsSerializer?: ParamsSerializerOptions;
paramsSerializer?: ParamsSerializerOptions | CustomParamsSerializer;
data?: D;
timeout?: Milliseconds;
timeoutErrorMessage?: string;
+11 -5
View File
@@ -57,11 +57,17 @@ class Axios {
}, false);
}
if (paramsSerializer !== undefined) {
validator.assertOptions(paramsSerializer, {
encode: validators.function,
serialize: validators.function
}, true);
if (paramsSerializer != null) {
if (utils.isFunction(paramsSerializer)) {
config.paramsSerializer = {
serialize: paramsSerializer
}
} else {
validator.assertOptions(paramsSerializer, {
encode: validators.function,
serialize: validators.function
}, true);
}
}
// Set config.method
+14
View File
@@ -2103,4 +2103,18 @@ describe('supports http with nodejs', function () {
it('should properly handle synchronous errors inside the adapter', function () {
return assert.rejects(() => axios.get('http://192.168.0.285'), /Invalid URL/);
});
it('should support function as paramsSerializer value', async () => {
server = await startHTTPServer((req, res) => res.end(req.url));
const {data} = await axios.post(LOCAL_SERVER_URL, 'test', {
params: {
x: 1
},
paramsSerializer: () => 'foo',
maxRedirects: 0
});
assert.strictEqual(data, '/?foo');
});
});