145 lines
3.3 KiB
TypeScript
145 lines
3.3 KiB
TypeScript
|
import axios from "axios";
|
||
|
import { ElMessage } from 'element-plus'
|
||
|
|
||
|
interface requestType {
|
||
|
url: string
|
||
|
params?: any
|
||
|
}
|
||
|
const handleCode = async (code: number, msg: string) => {
|
||
|
switch (code) {
|
||
|
case 401:
|
||
|
ElMessage.error(msg || '登录失效')
|
||
|
setTimeout(() => {
|
||
|
console.log('登录失效')
|
||
|
location.href="/login"
|
||
|
}, 1500)
|
||
|
// 跳转登录
|
||
|
break
|
||
|
default:
|
||
|
ElMessage.error(msg || `后端接口${code}异常`)
|
||
|
break
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//创建axsio 赋给常量service
|
||
|
const service = axios.create({
|
||
|
baseURL: "/api",
|
||
|
timeout: 30000,
|
||
|
headers: {
|
||
|
'Content-Type': 'application/json;charset=UTF-8',
|
||
|
"authorization": localStorage.getItem("token"),
|
||
|
}
|
||
|
});
|
||
|
// 添加请求拦截器
|
||
|
service.interceptors.request.use(
|
||
|
(config: any) => {
|
||
|
console.log(config, 'config')
|
||
|
return config;
|
||
|
},
|
||
|
(error: any) => {
|
||
|
// 对请求错误做些什么
|
||
|
console.log(error, 'error')
|
||
|
return Promise.reject(error);
|
||
|
}
|
||
|
);
|
||
|
// 添加响应拦截器
|
||
|
service.interceptors.response.use(
|
||
|
(response) => {
|
||
|
//response参数是响应对象
|
||
|
// 对响应数据做点什么
|
||
|
const { data, config } = response
|
||
|
return data;
|
||
|
},
|
||
|
(error: any) => {
|
||
|
const { response } = error
|
||
|
|
||
|
if (error.response && error.response.data) {
|
||
|
const { status, data } = response
|
||
|
handleCode(status, data.msg)
|
||
|
|
||
|
// 对响应错误做点什么
|
||
|
return Promise.reject(error);
|
||
|
} else {
|
||
|
let { message } = error
|
||
|
if (message === 'Network Error') {
|
||
|
message = '后端接口连接异常'
|
||
|
}
|
||
|
if (message.includes('timeout')) {
|
||
|
message = '后端接口请求超时'
|
||
|
}
|
||
|
if (message.includes('Request failed with status code')) {
|
||
|
const code = message.substr(message.length - 3)
|
||
|
message = '后端接口' + code + '异常'
|
||
|
}
|
||
|
ElMessage.error(message || `后端接口未知异常`)
|
||
|
return Promise.reject(error);
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @description GET
|
||
|
*/
|
||
|
const GET = ({ url, params }: requestType) => {
|
||
|
return service({
|
||
|
url,
|
||
|
method: "GET",
|
||
|
params
|
||
|
})
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description POST
|
||
|
*/
|
||
|
const POST = ({ url, params }: requestType) => {
|
||
|
return service({
|
||
|
url,
|
||
|
method: "POST",
|
||
|
data: params
|
||
|
})
|
||
|
}
|
||
|
/**
|
||
|
* @description PUT
|
||
|
*/
|
||
|
const PUT = ({ url, params }: requestType) => {
|
||
|
return service({
|
||
|
url,
|
||
|
method: "PUT",
|
||
|
data: params
|
||
|
})
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description DELETE
|
||
|
*/
|
||
|
const DELETE = ({ url, params }: requestType) => {
|
||
|
return service({
|
||
|
url,
|
||
|
method: 'delete',
|
||
|
data: params
|
||
|
})
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description PATCH
|
||
|
*/
|
||
|
const PATCH = ({ url, params }: requestType) => {
|
||
|
|
||
|
return new Promise((resolve, reject) => {
|
||
|
service
|
||
|
.put(url, params)
|
||
|
.then((res: any) => {
|
||
|
if (res && res.status == 200) {
|
||
|
resolve(res)
|
||
|
}
|
||
|
})
|
||
|
.catch((error: any) => {
|
||
|
reject(error)
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
export { GET, POST, PUT, DELETE, PATCH }
|