axios封装

import axios from 'axios'
import router from '../router/index'
import {
  Loading,
  Message
} from 'element-ui'
import QS from 'qs'
import store from '../store/store.js'
import basic from '@/data/basic'
import urlConst from './urlConst'
axios.defaults.withCredentials = false // 是否允许携带cookie

// http request 拦截器
axios.interceptors.request.use(
  config => {
    config.data = JSON.stringify(config.data)
    config.paramsSerializer = (params) => {
      return QS.stringify(params, {
        indices: false
      })
    }
    if (store.state.sessionid) {
      config.headers.common['Authorization'] = store.state.sessionid
    }
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// http response 拦截器
axios.interceptors.response.use(
  response => {
    // console.log(response)
    if (response.data.error_code == '-1' && response.data.msg == "请登录") {
      let loadingInstance = basic.getloading()
      if (loadingInstance != null) {
        loadingInstance.close()
      }
      store.commit("removeUserLoginInfo");
      store.commit("removeMenuData");
      store.commit("removeOperline");
      store.commit("removeSessionid");
      router.push({
        path: '/login',
        querry: {
          redirect: router.currentRoute.fullPath
        } // 从哪个页面跳转
      })
    } else if (response.data.error_code == '-10') {
      let loadingInstance = basic.getloading()
      if (loadingInstance != null) {
        loadingInstance.close()
      }
      Message({
        type: 'warning',
        message: response.data.msg
      })
      // window.location.href='/home'
      router.push({
        path: '/home',
        querry: {
          redirect: router.currentRoute.fullPath
        } // 从哪个页面跳转
      })
    }
    return Promise.resolve(response.data)
  },
  error => {
    let loadingInstance = basic.getloading()
    if (loadingInstance != null) {
      loadingInstance.close()
    }
    return Promise.reject(error)
  }
)

/***
 * 封装 HTTP 请求
 * @param url
 * @param data
 * @return {Promise}
 */

function apiAxios(method, url, params, header = 'json') {
  let headers = {
    'Content-Type': 'application/' + header + ';charset=UTF-8'
  }
  return axios({
    method: method,
    url: urlConst.official + url,
    data: method === 'POST' || method === 'PUT' ? params : null,
    params: method === 'GET' || method === 'DELETE' ? params : null,
    headers
    // headers: method === 'POST' || method === 'PUT' ? { 'Content-Type': 'application/json;charset=UTF-8' } : { 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8' }
  })
}

function apiAxios1(method, url, params) {
  return axios({
    method: method,
    url: urlConst.official1 + url,
    data: method === 'POST' || method === 'PUT' ? params : null,
    params: method === 'GET' || method === 'DELETE' ? params : null,
    headers: method === 'POST' || method === 'PUT' ? {
      'Content-Type': 'application/json;charset=UTF-8'
    } : {
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
    }
  })
}

export default {
  get: function(url, params, headers) {
    return apiAxios('GET', url, params, headers)
  },
  post: function(url, params, headers) {
    return apiAxios('POST', url, params, headers)
  },
  put: function(url, params) {
    return apiAxios('PUT', url, params)
  },
  delete: function(url, params) {
    return apiAxios('DELETE', url, params)
  },

  get1: function(url, params) {
    return apiAxios1('GET', url, params)
  },
  post1: function(url, params) {
    return apiAxios1('POST', url, params)
  },
}

// export default {
//   get: function (url, params) {
//     return new Promise((resolve, reject) =>{
//       axios.get(urlConst.official+url, {
//         params: params
//       })
//       .then(res => {
//           resolve(res.data);
//       })
//       .catch(err => {
//           reject(err)
//       })
//     });

//   },
//   post: function (url, params) {
//     return new Promise((resolve, reject) => {
//       axios.post(urlConst.official+url, QS.stringify(params))
//       .then(res => {
//           resolve(res.data);
//       })
//       .catch(err => {
//           reject(err)
//       })
//     });

//   },
// }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阁下何不同风起?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值