前端封装的方法
//http基本请求
import axios from 'axios';
import { resolve } from '../../build/webpack.base.conf';
import router from '../router';
axios.defaults.timeout = 5000; //超时时间是5秒
axios.defaults.withCredentials = true; //允许跨域
//Content-type 响应头
axios.defaults.headers.post['Content-type'] = 'application/x-www-from-urlencoded;charset=UTF-8';
//基础url
axios.defaults.baseURL = "http://localhost:8888";
//响应拦截器
axios.interceptors.response.use(
response => {
//如果response里面的status是200,说明访问到接口了,否则就是错误的.
if(response.status == 200){
return Promise.resolve(response); //Promise是一个异步框架. 继续往下执行
}else{
return Promise.reject(response);
}
},
error => {
if(error.response.status){
switch(error.response.status){
case 401: //未登录
router.replace({
path : '/',
query : {
redirect: router.currentRoute.fullPath
}
});
break;
case 404: //没有找到地址
break;
}
return Promise.reject(error.response); //返回一个错误信息
}
}
);
/**
* 封装get方法
*/
export function get(url,params={}){ //相对地址,参数. 如果不穿参数的话默认是空
//异步访问
return new Promise((resolve,reject) =>{
axios.get("url,{params:params}")
.then(response =>{
resolve(response.data);
})
.catch(err =>{
reject(err);
})
});
}
/**
* 封装post方法
*/
export function psot(url,data={}){ //相对地址,用表单所以用data对象,而不是参数params
//异步访问
return new Promise((resolve,reject) =>{
axios.post(url,data)
.then(response =>{
resolve(response.data);
})
.catch(err =>{
reject(err);
})
});
}
===
Avoided redundant navigation to current location错误
import Router from 'vue-router'
const originalPush = Router.prototype.push
Router.prototype.push = function push(location) {
return originalPush.call(this, location).catch(err => err)
}