Vue2.0+3.0x 对axios封装

对 axios 封装 vue2.0 and 3.0x

// 请求地址 https://api.it120.cc
// 引入axios模块
import axios from 'axios'
// 引入 Vue
import Vue from 'vue' // vue2.0
import { createApp } from 'vue' // vue3.0
import store from '../store' //vuex

/*
*引入loading组件方法 vue2.0
*/
import $loading from '@/components'
Vue.use($loading)

/*
*引入loading组件方法 vue3.0
*/
// import $loading from '@/components'
// var load = createApp().use($loading);

// axios 创建一个请求方法 请求头
const http = axios.create({
  // 设置请求头 公共地址
  baseURL: 'https://api.it120.cc',
  timeout: 5000 // 设置请求超时的时间
})

//请求拦截
// interceptors 请求拦截器 request 请求
http.interceptors.request.use(confirm => {
  // 请求成功
  if (store.state.userInfo.token) {
    confirm.headers.token = store.state.userInfo.token
  }
  // console.log(confirm.headers.token)
  // 使用 $loading 请求的时候调用 让 loading 显示 ------
  Vue.$loading.show('加载中···') // vue2.0
  // load.config.globalProperties.$loading.show('你是个麻瓜') //3.0
  return confirm
}, err => {
  // 请求失败
  Promise.reject(err)
})
// 响应拦截
// res 后台返回的数据
http.interceptors.response.use(res => {
  switch (res.data.code) {
    case 404:
      console.log('请求资源照不到!')
      break;
    case 500:
      console.log('服务器错误!')
      break;
  }
  // 请求结束 调用loading 让他隐藏
  Vue.$loading.hide() //vue2
  // $loading.config.globalProperties.$loading.hide() // vue3
  return res.data
}, err => {
  // $loading.config.globalProperties.$loading.hide() // vue3
  Promise.reject(err)
})
export default http
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值