axios是一个就promise的HTTP库,可以用在浏览器和node.js中
main.js
import Vue from 'vue'
import axios from 'axios'
// 使用拦截器
// 添加请求拦截器
axios.interceptors.response.use(
response => {
// 在发送请求之前做些什么
if (response.data.code && response.data.code === 401) {
router.push({
path: '/login',
})
Vue.prototype.$message.error("登录超时!");
}
if (response.data && response.data.code && response.data.code !== 200) {
Vue.prototype.$message.error(response.data.msg)
}
return response
},
error => {
// 对请求错误做些什么
let errorStatus = [401, 403]
if (errorStatus.includes(error.response.status)) {
local.remove('loginToken')
router.push({
path: '/login',
})
Vue.prototype.$message.error("登录超时!");
} else {
Message({
message: error.message,
type: 'error',
duration: 5 * 1000
})
return Promise.reject(error)
}
return error
}
);
// 添加响应拦截器
axios.interceptors.request.use(
config => {
// 对响应数据做点什么
// 判断是否存在token,如果存在的话,则每个http header都加上token
let token = local.get('loginToken')
let conheaders = config.headers.common
if (!Object.prototype.hasOwnProperty.call(conheaders, 'loginToken') && token) {
conheaders["X-Admin-Token"] = token
}
return config;
},
error => {
// 对响应错误做点什么
return Promise.reject(error);
});
调用axios
api.js
import axios from 'axios'
const baseUrl="https://xxxxxx"
export const test= (param) => {
return axios.request({
method: 'post/put/delete',
url: baseUrl + '/test/list',
data: param
})
};
export const test2= (param) => {
return axios.request({
method: 'get',
url: baseUrl + '/test2/get/' + param,
})
};
使用的时候
test.vue
<script>
import {test} from "./api.js"
import Swal from "sweetalert2";
export default {
data(){
return{}
},
create:function(){
this.testFun()
},
metiods:{
testFun(){
let params={}
test(params)
.then(res=>{console.log(res.data)})
.catch(reeor=>{Swal.fire("错误", error.toLocaleString(), "error");})
}
</script>