Skip to content
This repository was archived by the owner on Aug 12, 2025. It is now read-only.

Commit 47a992f

Browse files
committed
fix: urlsearchparam polyfill make request param missing error
1 parent 905ae53 commit 47a992f

File tree

3 files changed

+17
-24
lines changed

3 files changed

+17
-24
lines changed

packages/console-utils/xconsole-service/src/interceptors/paramsInterceptor/index.ts

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
import URLSearchParams from '@ungap/url-search-params';
1+
import qs from 'qs';
22
import { IOptions } from '../../types';
33
import { ApiType } from '../../const/index';
44

5-
export { URLSearchParams };
6-
75
// This is an axios request interceptor
86
// By using this interceptor, user can transform normal JavaScript data object
97
// into an URLSearchParams instance
@@ -12,25 +10,17 @@ function searchParamsInterceptor(config: IOptions): IOptions {
1210
const { params, data, apiType } = config;
1311
if (apiType === ApiType.custom) return config;
1412

15-
function transform(target: any = {}): URLSearchParams {
16-
const searchParams = new URLSearchParams();
17-
// Iterate over request data and append them to searchParams
18-
Object.keys(target).forEach((key) => {
19-
const value = target[key];
20-
if (typeof value !== 'undefined') {
21-
searchParams.append(key, value);
22-
}
23-
});
24-
return searchParams;
25-
}
26-
27-
const paramsSearchParams = transform(params);
28-
const dataSearchParams = transform(data);
13+
const paramsSearchParams = qs.stringify(params);
14+
const dataSearchParams = qs.stringify(data);
2915

3016
// Return the new config
3117
return {
3218
...config,
19+
headers: {
20+
'content-type': 'application/x-www-form-urlencoded'
21+
},
3322
params: paramsSearchParams,
23+
//@ts-ignore
3424
data: dataSearchParams,
3525
originParams: params,
3626
originData: data,

packages/console-utils/xconsole-service/src/interceptors/riskInterceptor/handleDoubleConfirm.tsx

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import axios, { AxiosResponse } from 'axios';
2-
import { URLSearchParams } from '../paramsInterceptor/index';
2+
import qs from 'qs';
33
import getVerifyInformation from './getVerifyInformation';
44
import {
55
guideToVerificationMethodSetting,
66
guideToVerificationDetailSetting,
77
} from './helpers';
88
import { IResponse, IResponseData, Risk } from '../../types';
9+
import paramsInterceptor from '../paramsInterceptor/index'
910

1011
export interface IVerifyOptions {
1112
isVerifyCodeValid: boolean;
@@ -17,6 +18,7 @@ export interface IVerifyOptions {
1718
}
1819

1920
const axiosInstance = axios.create();
21+
axiosInstance.interceptors.request.use(paramsInterceptor)
2022

2123
function isVerifyCodeValid(
2224
res: AxiosResponse | null,
@@ -75,10 +77,10 @@ async function handleDoubleConfirm(
7577
const {
7678
config: { data: reqDataString, url: reqUrl },
7779
} = response;
78-
const reqData = new URLSearchParams(reqDataString);
79-
reqData.append('verifyType', verifyType);
80-
if (verifyCode) reqData.append('verifyCode', verifyCode);
81-
if (requestId) reqData.append('requestId', requestId);
80+
const reqData = qs.parse(reqDataString)
81+
reqData['verifyType'] = verifyType;
82+
if (verifyCode) reqData['verifyCode'] = verifyCode;
83+
if (requestId) reqData['requestId'] = requestId;
8284

8385
newResponse = await axiosInstance({
8486
method: 'post',

packages/console-utils/xconsole-service/stories/index.stories.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,12 @@ import '@alicloud/console-components/dist/wind.css'
1111
defaultAxiosRequest.interceptors.request.handlers.unshift({
1212
fulfilled: (config) => {
1313
config.baseURL = 'https://oneapi.alibaba-inc.com/mock/oneconsole';
14-
config.method = 'GET'
14+
// config.method = 'GET'
1515
if(config.url.indexOf('multiApi.json')) {
1616
config.url = config.url.replace(/multiApi.json/, 'api.json')
1717
config.url = config.url.replace(/action=undefined/, 'action=DescribeMultiApi')
1818
}
19+
1920
return config;
2021
}
2122
});
@@ -26,7 +27,7 @@ storiesOf('XConsole Service', module)
2627
// .addDecorator(withAxiosDecorator(defaultAxiosRequest))
2728
.add('AppCode', () => {
2829
const action = select('action', ['DescribeInstance', 'DescribeAPI'], 'DescribeInstance')
29-
const { data, error } = useOpenApi('consoledemo', action, null, { throwDoubleConfirmError: true })
30+
const { data, error } = useOpenApi('consoledemo', action, {'xxxx': 'xxxx2'}, { throwDoubleConfirmError: true })
3031
// @ts-ignore
3132
console.log(error?.response)
3233
return <div>{JSON.stringify(data)}{JSON.stringify(error)}</div>

0 commit comments

Comments
 (0)