1、修改index.ts
添加src/index.js请求转换代码:
axios({
method: "post",
url: baseUrl + "/post",
headers: {},
timeout: 1000,
data: user,
transformRequest: function (data, headers) {
// 对请求 data 进行任意转换处理
return Object.assign(data, { code: 'transformRequest验证码' });
},
// // `transformResponse` 在传递给 then/catch 前,允许修改响应数据
transformResponse: function (data) {
// 对 data 进行任意转换处理
return data.status === 201;
},
})
.then((response: AxiosResponse) => {
console.log(response);
})
.catch((error: any) => {
console.log(error);
});
2、修改types.ts
修改src/axios/types.ts文件,添加请求转换类型:
export interface AxiosRequestConfig {
url?: string;
method?: Methods;
params?: any;
headers?: PlainObject;
data?: PlainObject;
timeout?: number;
// 请求转换器
transformRequest?: (data:any, headers: any) => any;
// 转换器响应
transformResponse?: (data: any) => any;
}
3、修改Axios.ts
修改src/axios/Axios.ts文件,添加请求转换源码:
在拦截器之前添加请求转换:
在返回相应结果前添加相应转换:
4、效果
请求转换结果:
相应转换结果:
5、源代码
代码地址:https://gitee.com/linhexs/handwritten-axios/tree/5.transformRequest-transformResponse/