import axios from "axios";
import qs from "qs"; //处理参数
import router from '../router'; //引入路由
import { Loading , Message} from 'element-ui'; let loading = null; //开始加载动画
function openLoading(){
loading = Loading.service({
lock:true,
text:'拼命加载中...',
background:'rgba(0,0,0,.7)'
});
} //关闭加载动画
function closeLoading(){
loading.close();
} //添加请求拦截器
axios.interceptors.request.use(
config => {
//加载动画
openLoading()
if(localStorage.sessionId){ //如果我的sessionId存在(sessionId其实就是token)
// 设置统一的请求header
config.headers.Authorization = localStorage.sessionId //授权(每次请求把sessionId带给后台)
}
return config;
},
error => {
return Promise.reject(error);
}
); //添加响应拦截器
axios.interceptors.response.use(
response => {
  //逻辑处理
if(response.data.errorCode == -){ //后端反回的状态值,本应该errorCode是status
Message({
type:'warning',
duration:,
showClose: true,
message:'当前登录已失效,请从新登录!'
})
router.push("/logon")//让用户从新回到登录页面
}
return response;
},
error => {
  closeLoading() //请求超时清除加载动画
return Promise.resolve(error.response);
}
); axios.defaults.baseURL = "http://10.26.41.181:8081/nei"; // 开发 axios.defaults.headers.post["Content-Type"] = "application/json";
axios.defaults.headers.post["X-Requested-With"] = "XMLHttpRequest";
axios.defaults.timeout = ; //设置请求超时时间 function checkStatus(response) {
return new Promise((resolve, reject) => {
if(response && (response.status === || response.status === || response.status === )){
   try{
     closeLoading() //关闭加载动画
}catch(e){
   //抛出异常
console.log(e)
}
      resolve(response.data);
}else{
    try{
closeLoading() //关闭加载动画
}catch(e){
//抛出异常
console.log(e)
}
      Message({
type:'error',
showClose: true,
message:'网络异常,请检查网络连接是否正常!'
})
}
});
} export default {
post(url, params) {
return axios({
method: "post",
url,
data: params
}).then(response => {
return checkStatus(response);
});
},
get(url, params) {
params = qs.stringify(params);
return axios({
method: "get",
url,
params
}).then(response => {
return checkStatus(response);
});
}
};

使用:在main.js里面引入这个文件,并挂载到vue原型上,这样可以通过this.xxxx去拿到

import axios from './api/api.js'   //引入axios文件夹
Vue.prototype.$axios = axios; //挂载到整个Vue原型上

axios 的使用:在需要请求的页面如下引用

//post请求
this.$axios.post('url',{key:value}).then(res =>{
cons.log(res,'后端返回数据')
})
//get请求
this.$axios.get('url?key=value').then(res =>{
cons.log(res,'后端返回数据')
})

最新文章

  1. ZKW线段树
  2. hibernate缓存
  3. nodejs+mysql
  4. 保利威视Polyv点播集成
  5. Linux文件I/O学习
  6. C#部分---函数添加基本格式;
  7. php.ini中Magic_Quotes_Gpc开关设置
  8. 项目源码--Android类似酷狗音乐播放器
  9. python27读书笔记0.3
  10. Tcl学习之--语法|变量
  11. ntopng-一款流量审计框架的安装以及应用
  12. 记一次工作失误,openresty报502错误
  13. Pytorch_01 Tensor,Autograd,构建网络
  14. Xamarin.Android 上中下布局
  15. jQuery应用实例3:全选、二级联动
  16. vuex数据持久化存储
  17. spring的官方文档地址
  18. Python 基础数据类型相互转换
  19. ElasticeSearch(五)分布式索引架构
  20. OpenStack单节点网络设置

热门文章

  1. NOIP 2008 立体图
  2. Taro,实现小程序在样式文件中导入背景图片
  3. Arduino读取ph试剂浓度
  4. linux脚本中有source相关命令时的注意事项
  5. concurrent(六)同步辅助器CyclicBarrier & 源码分析
  6. 2018-2019-2 网络对抗技术 20165230 Exp9 :Web安全基础
  7. Kafka Offset Monitor页面显示空白
  8. 停止IIS服务
  9. sde.layers表的eflags字段解析
  10. laravel 可以做什么