/**
* Promise based HTTP client for the browser and node.js
* 所有 AJAX 请求都要通过此文件暴露出来的 axios 执行
* @type {Object}
* @see https://github.com/mzabriskie/axios
*/
import axios, {AxiosRequestConfig} from 'axios';
import qs from 'qs';
type AjaxCustomRequestConfig = AxiosRequestConfig & {
rawFormData?: boolean;
};
function configConverter(config: AjaxCustomRequestConfig): AxiosRequestConfig {
if (config.rawFormData !== false && typeof config.data !== 'string') {
// 默认支持 rawFormData
config.data = qs.stringify(config.data);
}
return config;
}
// 发送请求前做特殊处理
axios.interceptors.request.use(
function (config: AjaxCustomRequestConfig) {
// Do something before request is sent
config.params = config.params || {};
config.data = config.data || {};
// 如果希望全局使用 formData 移除这行,去除前希望你能够先说服一下后端使用 JSON
config.rawFormData = false;
return configConverter(config);
},
function (error) {
// Do something with request error
return Promise.reject(error);
}
);
// 返回结果前做特殊处理
axios.interceptors.response.use(
function (response) {
// Do something with response data
return response.data;
},
function (error) {
// Do something with response error
return Promise.reject(error);
}
);
export default axios;
Axios封装
最新推荐文章于 2024-05-18 15:09:49 发布