新建文件src目录下新建api文件夹并新建http.js导入axios和qsimport axios from axios;import qs from qs;根据环境变量区分接口的默认地址switch (process.env.NODE_ENV) {case production:axios.defaults.b...

新建文件
src目录下新建api文件夹并新建http.js
- 导入axios和qs
import axios from 'axios';
import qs from 'qs';
- 根据环境变量区分接口的默认地址
switch (process.env.NODE_ENV) {
case "production":
axios.defaults.baseURL = "http://api.wangjie.com";
break;
case "test":
axios.defaults.baseURL = "http://api.test.com";
break;
default:
axios.defaults.baseURL = "http://localhost:8080"
}
- 设置超时时间和跨域是否允许携带凭证
axios.defaults.timeout = 10000;
axios.defaults.withCredentials = true;
- 设置请求传递数据的格式
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.transformRequest = data => qs.stringify(data);
- 设置请求拦截器
axios.interceptors.request.use(config => {
// 携带token
let token = localStorage.getItem('token');
token && (config.headers.Authorization = token)
return config
}, error => {
return Promise(reject(error))
});
- 设置响应拦截器
axios.interceptors.response.use(response => {
return response.data;
}, error => {
let { response } = error;
if (response) {
switch (response.status) {
case 401: // 权限不足,未登录状态
break;
case 403: // 服务器拒绝执行 token/session过期
break;
case 404: // 找不到页面
break;
}
} else {
if (!window.navigator.onLine) {
// 断网处理
return;
} else {
return Promise.reject(error);
}
}
})
- 导出配置
export default axios;
织梦狗教程
本文标题为:Axios的二次封装


基础教程推荐
猜你喜欢
- android studio按钮监听的5种方法实例详解 2023-01-12
- Android多返回栈技术 2023-04-15
- 解决Android Studio突然不显示logcat日志的问题 2023-02-04
- IOS应用内跳转系统设置相关界面的方法 2022-11-20
- Android开发使用RecyclerView添加点击事件实例详解 2023-06-15
- Android中的webview监听每次URL变化实例 2023-01-23
- IOS 播放系统提示音使用总结(AudioToolbox) 2023-03-01
- Flutter手势密码的实现示例(附demo) 2023-04-11
- Flutter绘图组件之CustomPaint使用详解 2023-05-12
- iOS开发教程之XLForm的基本使用方法 2023-05-01