importVue from 'vue'importApp from './App'importrouter from './router'// 导入路由文件importstore from './store'// 导入vuex文件importaxios from './http/service'// 导入a接口Vue.prototype.$axios= axios;// 把axios挂载到Vue的原型上,这样的话项目中任何一个组件都可以使用了
在service.js文件中进行具体的封装 axios本身是单例模式
importaxios from 'axios'import{baseUrl} from '@/config/index.js'import{Toast} from "vant"//引入vant组件// 设置axios的基地址// 接口地址有相同的部分,我们要把相同的部分提取出设置一下,后面调用接口就不需要写相同的部分//创建service实例,const service = axios.create({
baseURL: baseUrl,//基地址
timeout:5000,// request timeout 超时时间})//service.defaults.baseURL=baseUrl// 添加请求拦截器----(设置请求头,传递token)
service.interceptors.request.use(function (config){// 在发送请求之前做些什么 //请求数据时能够看到加载效果//1.请求loading开启动画Toast.loading({
duration:5000,
forbidClick:true})//2.设置token--->使用vuex 在没有配置vuex的情况下我们可以使用本地存储
config.headers ['Authorization']=vuex
**本地存储是不具备响应功能的,改变数据,页面并不会立即更新**return config;}, function (error){// 对请求错误做些什么returnPromise.reject(error);});// 添加响应拦截器---处理共性的错误统一做处理
service.interceptors.response.use(function (response){// 对响应数据做点什么Toast.clear()return response.data;}, function (error){// 对响应错误做点什么returnPromise.reject(error);});// 导出
export default service;