0%

使用 transformRequest 格式化参数

需求:某个参数需要传入多个的情况

选择器是多选的情况,多选的数据是一个数组,直接将数组入参,无法达到效果。
开始想到的方法是将数据进行拼接,后面想到可以使用transformRequest方法进行参数格式化,方便其他地方调用

方式一:拼接

1
2
3
4
5
6
7
//组件 selectValue是个数组
let params =""
this.selectValue.forEach(item => {
params += `member=${item}&`
});
params += `teamId=${this.teamId}`;
this.addMem(params);

封装的方法

1
2
3
4
5
6
7
8
9
10
export const postRequest = (url, params) => {
return http({
method: 'post',
url: url,
data: params,
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
});
}

方式二:transformRequest方法进行参数格式化

1
2
3
4
5
6
//组件 selectValue是个数组
let params = {
member: this.selectValue,
teamId: this.teamId
};
this.addMem(params);

封装的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
export const postStrReq = (url, params) => {
return http({
method: 'post',
url: url,
data: params,
transformRequest: [function (data) {
let ret = '';
for (let it in data) {
ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&';
}
return ret.slice(0, -1);
}],
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
});
}