api.js


import axios from 'axios'

// http requser 拦截器
axios.interceptors.request.use((config) => {
    return config
}, (err) => {
    alert('请求超时')
    return Promise.resolve(err)
})

// 响应拦截, 异常处理
axios.interceptors.response.use((data) => {
    return data
}, (err) => {
    if (err && err.response) {
        switch (err.response.status) {
            case 400:
                alert('错误请求')
            break;
            case 401:
                alert('未授权,请重新登录')
                break;
            case 403:
                alert('拒绝访问')
                break;
            case 404:
                alert('请求错误,未找到该资源')
                break;
            case 405:
                alert('请求方法未允许')
                break;
            case 408:
                alert('请求超时')
                break;
            case 500:
                alertalert('服务器端出错')
                break;
            case 501:
                alert('网络未实现')
                break;
            case 502:
                alert('网络错误')
                break;
            case 503:
                alert('服务不可用')
                break;
            case 504:
                alert('网络超时')
                break;
            case 505:
                alert('http版本不支持该请求')
                break;
            default:
                alert(`连接错误${err.response.status}`)
        }
    } else {
        alert('服务器连接失败')
    }
})

/**
 *  封装 get 方法
 *  @returns { Promise }
 */

 export function get(url, params = {}) {
     return new Promise((resolve, rejects) => {
         axios.get(url, {
             params: params
         }).then((res) => {
             resolve(res.data)
         }).catch((err) => {
             rejects(err)
         })
     })
 }

 /**
  *  封装 post 方法
  *  @returns { Promise }
  */

  export function post(url, params ={}) {
      return new Promise((resolve, reject) => {
          axios.post(url, params).then((res) => {
              resolve(res.data)
          }).catch((err) => {
              reject(err)
          })
      })
  } 

  /**
   *  获取接口方法
   */

   export const server = {
       login (paramsObj) {
           return get('/login', paramsObj)
       }
   }

在main.js导入


// api 接口
import {server} from 'api/api'
// 添加 server 接口
Vue.prototype.$server = server

用法

const paramsObj = {
	username: 'admin',
	password: 123456
}

this.$server.login(paramsObj).then((res) => {
	console.log(res)
})