httpRequest.js 3.02 KB
//引入axios
import axios from 'axios'
//import qs from 'qs'
let cancel ,promiseArr = {}
const CancelToken = axios.CancelToken;
//请求拦截器  // 在发送请求之前做些什么
axios.interceptors.request.use(config => {
  //发起请求时,取消掉当前正在进行的相同请求
  config.headers['x-auth-token'] = '5a706458-5a67-4297-a009-30fb82a2fa45'
  // if(config.method === 'post') {
  //   let data = qs.parse(config.data)
  //
  //   config.data = qs.stringify({
  //     sysCode: '1001'
  //   })
  // } else if(config.method === 'get') {
  //   config.params = {
  //     sysCode: '1001'
  //   }
  // }
  config.data = {
    ...config.data,
    sysCode: '1001'
  }
  // config.data = qs.stringify(config.data);
  return config
}, error => {
  return Promise.reject(error)
})


//响应拦截器即异常处理,对响应数据做点什么
axios.interceptors.response.use(response => {
  return response
}, err => {
  err.messages='';
  if (err && err.response) {
    switch (err.response.status) {
      case 400:
        err.messages = '错误请求'
        break;
      case 401:
        err.messages = '未授权,请重新登录'
        break;
      case 403:
        err.messages = '拒绝访问'
        break;
      case 404:
        err.messages = '请求错误,未找到该资源'
        break;
      case 405:
        err.messages = '请求方法未允许'
        break;
      case 408:
        err.messages = '请求超时'
        break;
      case 500:
        err.messages = '服务器端出错'
        break;
      case 501:
        err.messages = '网络未实现'
        break;
      case 502:
        err.messages = '网络错误'
        break;
      case 503:
        err.messages = '服务不可用'
        break;
      case 504:
        err.messages = '网络超时'
        break;
      case 505:
        err.messages = 'http版本不支持该请求'
        break;
      default:
        err.messages = `连接错误${err.response.status}`
    }
  } else {
    err.messages = "连接到服务器失败";
  }
  //message.err(err.message)
  //return Promise.reject(err.response)
  return Promise.resolve(err)
})
//基础url前缀
//axios.defaults.baseURL = '/api'
axios.defaults.baseURL = 'http://39.98.54.240:8093/';
//设置默认请求头
// axios.defaults.withCredentials=true;//让ajax携带cookie

// axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
axios.defaults.timeout = 10000

export default {
  //get请求
  get (url,param) {
    return new Promise((resolve,reject) => {
      axios({
        method: 'get',
        url,
        params: param,
        cancelToken: new CancelToken(c => {
          cancel = c
        })
      }).then(res => {
        resolve(res)
      })
    })
  },
  //post请求
  post (url,param) {
    return new Promise((resolve,reject) => {
      axios({
        method: 'post',
        url,
        data: param,
        cancelToken: new CancelToken(c => {
          cancel = c
        })
      }).then(res => {
        resolve(res)
      })
    })
  }
}