vue axios攔截器的封裝


// request.js
import axios from 'axios'
import qs from 'qs'

// 創建axios實例
const service = axios.create({
  timeout: 10000, // 請求超時時間
  transformrequest: data => qs.stringify(data)
})
// request攔截器
service.interceptors.request.use(
  config => {
    config.headers['X-Requested-With'] = 'XMLHttpRequest'
    config.headers['X-Platform'] = window.__wxjs_environment === 'miniprogram' ? 'MiniProgram' : 'H5'
    return config
  },
  error => ({ status: 0, msg: error.message })
)

// respone攔截器
service.interceptors.response.use(
  response => {
    const res = response
    if (response.status === 200) {
      switch (res.status) {
      case 0: // 錯誤並提示
        if (!response.config.errorSelf) {
          //
        }
        return { data: res.data, msg: res.msg, status: false }
      case 1: // 成功返回數據
        return { data: res.data, msg: res.msg, status: true }
      case -1: // 暫不進行任何操作
        return { data: res.data, status: false }
      default:

        return { data: res.data, status: true }
      }
    }
    return { data: response.data, status: false }
  },
  error => {
    console.log('err' + error) // for debug
    switch (error.request.status) {
    case 401: // 無權限訪問,需要登錄
      return Promise.reject ? Promise.reject(error) : error
    case 500: // 請求接口錯誤
      if (error.config.linkError) {
        //
      }
      return Promise.reject ? Promise.reject(error) : error
    }
    return Promise.reject ? Promise.reject(error) : error
  }
)

export default service

調用:

import request from '@/utils/request'

/**
 * 登錄
 */
export function login (data) {
  return request({
    url: '/sqlapi/login',
    method: 'post',
    data: {
      username: data.username,
      password: data.password
    }
  })
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM