http.js文件
import axios from 'axios';
axios.defaults.timeout = 600000;
axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8';
function getRequestOneKey(config) {
let { method, url, params, data } = config;
return [method, url, JSON.stringify(params), JSON.stringify(data)].join("&");
}
let pendingRequest = new Map();
function addPendingRequest(config) {
let requestKey = getRequestOneKey(config);
config.cancelToken = config.cancelToken || new axios.CancelToken((cancel) => {
if (!pendingRequest.has(requestKey)) {
pendingRequest.set(requestKey, cancel);
}
});
}
function removePendingRequest(config) {
let requestKey = getRequestOneKey(config);
if (pendingRequest.has(requestKey)) {
let cancel = pendingRequest.get(requestKey);
cancel(requestKey);
pendingRequest.delete(requestKey);
}
}
axios.interceptors.request.use(
(config) => {
removePendingRequest(config);
addPendingRequest(config);
return config;
},
(error) => {
console.log(error, '请求前')
return Promise.reject(error);
}
);
axios.interceptors.response.use(
(response) => {
removePendingRequest(response.config);
return response;
},
(error) => {
removePendingRequest(error.config || {});
if (axios.isCancel(error)) {
return
} else {
switch (error.response.status) {
case 502:
message.error("网络异常,请稍后重试");
break;
case 500:
message.error("系统错误");
break;
default:
break;
}
store.commit("loadingTitle", false);
return Promise.reject(error);
}
}
);
export function get(url, params) {
return new Promise((resolve, reject) => {
axios.get(url, {
params
})
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
});
}
export function post(url, params) {
return new Promise((resolve, reject) => {
axios.post(url, params)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
});
}
export function put(url, params) {
return new Promise((resolve, reject) => {
axios.put(url, params)
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
});
}
export function $delete(url, params) {
return new Promise((resolve, reject) => {
axios.delete(url, {
params: params
})
.then(res => {
resolve(res.data);
})
.catch(err => {
reject(err.data)
})
});
}
api.js(api接口统一管理文件,后续用到的接口都在这个文件导出)
import { get, post, $delete, put } from "./http";
export const getUserDataList=(data)=>{
return get('/a',data)
}
export const getUserData=(data)=>{
return post('/a/b',data)
}
export const putUserData=(data)=> {
return put(`/a/b/detail/${data.user_id}`, data);
};
export const delUserData=(data)=> {
return $delete(`/a/b/detail/${data.user_id}`, data);
};
A.vue(A页面需要调用接口获取用户列表)
<template>
<div>A页面</div>
</template>
<script>
import {getUserDataList} from "@/api/api";
export default{
name:'A',
data(){
return {}
},
create(){},
mounted(){
this.getuserList()
},
methods:{
getuserList(){
let param={
page:20,
cur:1
}
getUserDataList(param).then((res)=>{
}).catch((err)=>{
})
}
}
}
</script>