aioxs二次封装使用

2019-09-29  本文已影响0人  kaimen_0ca9

import axios from  'axios'

import Qs from 'qs'

axios.defaults.withCredentials = false     //   false 不跨域  true 跨域

axios.defaults.baseURL = process.env.NODE_ENV === 'development' ? 'api' : 'apis'

// axios.defaults.headers.common['token'] = localStorage.getItem('token');  // 设置请求头,这个不是必须的

export default function (url, params, method = 'get', type = 'json') {

  let headers = {}

  let path = '/api-a-bkf-/user-mucon'  // 后端路由层地址

  if (method === 'post') {

    if (type === 'json') {

      headers = {

        'X-Requested-With': 'XMLHttpRequest',

        'Content-Type': 'application/x-www-form-urlencodes;charset=UTF-8' 

      }

    } else {

      headers = {

        'X-Requested-With': 'XMLHttpRequest',

        'Content-Type': 'application/x-www-form-urlencodes;charset=UTF-8'

      }

      params = Qs.stringify(params)

    }

  }

  // 当出现某些情况的时候设置请求拦截

  axios.interceptors.response.use(response => {

    // if (response.data.statusCode === 2009) {     // 这里的状态码是根据后台设置的来

    //   Message.error({ message: '登录过期,请重新登录' })

    // }

    return response

  }, error => {

    // if (error.message.indexOf('timeout') >= 0) {

    //   Message.error({

    //     message: '请求超时,请稍后再试!'

    //   })    // 后台响应超时

    // } else if (error.response === undefined) {

    //   Message.error({

    //     message: '服务中断,请稍后再试!'

    //   })    // 后台无响应 

    // }

    return Promise.resolve(error.response)

  })

  //  发送请求

  return new Promise((resolve, reject) => {

    axios({

      url: path + url,

      method,

      type,

      data: params,

      timeout: 6000,

      headers: headers

    }).then(result => {

      resolve(result.data)

    }).catch(err => {

      reject(err)

    })

  })

}

    以上是axios.js里封装代码,在api.js中统一调用:

上一篇 下一篇

猜你喜欢

热点阅读