axios 配合Promise

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/xiong451823652/article/details/100568844

http.js

/*
 * @Description: In User Settings Edit
 * @Author: your name
 * @Date: 2018-12-08 11:57:56
 * @LastEditTime: 2019-09-01 12:48:20
 * @LastEditors: Please set LastEditors
 */
/**
 * 引用axios
 */
import axios from 'axios'
import NProgress from 'nprogress'

/**
 *
 * @param {*} method http请求方式
 * @param {*} url  请求接口地址
 * @param {*} params 提交的参数
 * @param {*} success 成功回调
 * @param {*} failure 失败回调
 */
axios.interceptors.request.use(
  config => {
    NProgress.start()
    return config
  },
  error => {
    return Promise.reject(error)
  }
)
axios.interceptors.response.use(
  response => {
    NProgress.done()
    return response
  },
  error => {
    NProgress.done()
    return Promise.reject(error)
  }
)

function apiAxios (method, url, params) {
  let tokenStore = localStorage.getItem('store')
  if (tokenStore != null) {
    axios.defaults.headers.common['Authentication-Token'] = tokenStore
  }
  return new Promise((resolve, reject) => {
    axios({
      method: method,
      url: url,
      data: method === 'POST' || method === 'PUT' ? params : null,
      params: method === 'GET' || method === 'DELETE' ? params : null,
      withCredentials: false
    })
      .then(function (res) {
        if (res.status === 200) {
          resolve(res.data)
        } else {
          reject(res.response)
        }
      })
      .catch(function (err) {
        let res = err.response
        reject(res)
        if (err) console.error('api error, HTTP CODE: ' + res.data.status)
      })
  })
}

/**
 *  返回在vue模板中的调用接口
 */
export default {
  /**
   *
   * @param {*} url
   * @param {*} params
   * @param {*} success
   * @param {*} failure
   * @param {*} isSign
   */
  get: function (url, params, success, failure) {
    return apiAxios('GET', url, params, success, failure)
  },
  post: function (url, params, success, failure) {
    return apiAxios('POST', url, params, success, failure)
  },
  put: function (url, params, success, failure) {
    return apiAxios('PUT', url, params, success, failure)
  },
  delete: function (url, params, success, failure) {
    return apiAxios('DELETE', url, params, success, failure)
  }
}

猜你喜欢

转载自blog.csdn.net/xiong451823652/article/details/100568844