封装axios请求方法1

import axios from 'axios'
import Qs from 'qs'
import { Message, Loading  } from 'element-ui'

// axios.defaults.baseURL = 'http://xx.xxx.xx.xxx:8082/'  //服务器域名
axios.defaults.baseURL = window.CONFIG.baseUrl;
axios.defaults.timeout = '10000'  //请求超时时间

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;multipart/form-data'
axios.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded'
axios.defaults.headers.get['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'

/**
 * request interceptor 请求拦截(请求发出前处理请求)
 */
axios.interceptors.request.use(
  config => {
    return config
  },
  error => {
    return Promise.reject(error)
  }
)

/**
 * response interceptor 响应拦截器(处理响应数据)
 */
axios.interceptors.response.use(
  response => {
    const res = response.data
    if (res.state || res.state === 200 || res.code === 200 || res.code === '0000' || res.returnCode === '0000' || res.code === 10000) {
      return res
    } else {
      Message({
        message: res.description || 'error',
        type: 'error',
        duration: 5 * 1000
      })
      return Promise.reject(res)
    }
  },
  error => {
    Message({
      message: error.msg,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  },
  error => {
    Message({
      message: error.msg,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

/**
 * api请求方法
 *
 * @param {String} method       请求方法
 * @param {String} url          接口
 * @param {Object} params       提交数据
 */
const apiRequest = (method, url, params) => {
  const loading = Loading.service ({
    lock: true,
    text: 'Loading',
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.7)'
  });
  return new Promise((resolve, reject) => {
    axios({
      method: method,
      url: url,
      data: method !== 'get' ? Qs.stringify(params) : null,
      params: method === 'get' ? params : null
    }).then(res => {
      resolve(res)
      loading.close()
    }).catch(err => {
      reject(err)
      loading.close()
    })
  })
}

export default apiRequest;

猜你喜欢

转载自blog.csdn.net/qq_22182989/article/details/108451817