阅读 107

Axios的二次封装

新建文件

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;

原文:https://www.cnblogs.com/wangjie11/p/14713605.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐