zoukankan      html  css  js  c++  java
  • axios使用 v1

    import axios from 'axios'
    import QS from 'qs'
    import store from '@/store'
    import router from '@/router'
    
    import constv from '@/config/constv'
    // const wayValue = (process.env.NODE_ENV == 'development' || process.env.NODE_ENV == 'production') ? constv.Proxy_WAY_DEV_PROD : constv.Proxy_WAY_DEMO_API2
    const wayValue = constv.Proxy_Way
    var instance = axios.create({
      baseURL: `${process.env.VUE_APP_BASE_API}`, // 'http://192.168.x.x:3000/mock/130',
      headers: { 'Content-Type': 'application/json', way: wayValue },
      timeout: 60000
    })
    // instance.defaults.baseURL = 'http://192.168.x.x:3000/mock/130'
    // instance.defaults.headers.post['Content-Type'] = 'application/json'
    let flag = true
    // 对外接口
    export function requestJson ({ method, url, params, responseType, header }) {
      if (method === 'Get') {
        return get(url, params, responseType)
      } else if (method === 'Post') {
        return post(url, params, responseType)
      }
    }
    
    // 封装get方法
    function get (url, params, responseType) {
      return new Promise((resolve, reject, responseType) => {
        instance
          .get(url, params)
          .then(res => {
            resolve(res.data)
          })
          .catch(err => {
            reject(err.data)
          })
      })
    }
    
    // 封装post方法
    function post (url, params, responseType) {
      return new Promise((resolve, reject) => {
        instance
          .post(url, JSON.stringify(params), responseType, { headers: { 'Content-Type': 'application/json' } })
          .then(res => {
            resolve(res.data)
          })
          .catch(err => {
            reject(err.data)
          })
      })
    }
    
    // //请求拦截(请求发出前处理请求)
    instance.interceptors.request.use(
      config => {
        const headers = config.headers
        if (headers['content-type'] === 'application/octet-stream;charset=utf-8') {
          return config.data
        }
        const token = localStorage.getItem('token')
        config.headers.common['token'] = token
        config.headers.common['way'] = wayValue
        // config.headers.common['content-type'] = 'application/json'
        return config
      },
      error => {
        return Promisee.error(error)
      }
    )
    
    // // 响应拦截器(处理响应数据)
    instance.interceptors.response.use(
      response => {
        if (response.status === 200) {
          if (response.data.code === 10200) {
            if (flag) {
              alert(response.data.msg)
              flag = false
            }
            store.dispatch('Logout').then(() => {
              router.replace('/user/login')
            })
          } else if (
            response.data.code === 0 ||
            response.data.errcode === 0 ||
            response.headers['content-type'] === 'application/pdf'
          ) {
            return Promise.resolve(response)
          } else {
            alert(response.data.msg)
            return Promise.resolve(response)
          }
        } else {
          // 这个地方可以由后台编辑状态码区分不同情况,做不同的逻辑处理
          return Promise.reject(response)
        }
      },
      error => {
        if (error.response.status === 401) {
          alert('登陆过期,重新登陆')
          store.dispatch('Logout').then(() => {
            router.replace('/user/login')
          })
        } else {
          return Promise.reject(error.response)
        }
      }
    )
  • 相关阅读:
    图表算法—有向图
    图表算法—无向图
    搜索算法—哈希表
    红黑树的删除
    搜索算法—红黑树
    搜索算法—二叉搜索树
    排序算法—堆排序
    快速排序改进——3区快速排序(3-way quicksort)
    数论——约数:算数基本定理及推论,欧几里得算法
    数论——乘法逆元(快速幂求法)及模运算
  • 原文地址:https://www.cnblogs.com/dhjy123/p/15472394.html
Copyright © 2011-2022 走看看