admin-webpc/src/utils/request.ts

157 lines
3.6 KiB
TypeScript
Raw Normal View History

2025-02-03 23:58:33 +08:00
import axios from "axios";
import { ElMessage } from 'element-plus'
2025-02-06 12:06:05 +08:00
import { useRouter } from "vue-router";
2025-02-03 23:58:33 +08:00
interface requestType {
url: string
params?: any
}
const handleCode = async (code: number, msg: string) => {
2025-02-04 00:53:29 +08:00
console.log(code);
2025-02-06 12:06:05 +08:00
const router = useRouter();
2025-02-03 23:58:33 +08:00
switch (code) {
case 401:
ElMessage.error(msg || '登录失效')
setTimeout(() => {
console.log('登录失效')
2025-02-06 12:06:05 +08:00
router.push("/login")
2025-02-03 23:58:33 +08:00
}, 1500)
// 跳转登录
break
default:
ElMessage.error(msg || `后端接口${code}异常`)
break
}
}
//创建axsio 赋给常量service
const service = axios.create({
2025-02-04 00:22:26 +08:00
baseURL: "https://sh-ocr-api.bskies.cc/",
// baseURL: "/api",
2025-02-03 23:58:33 +08:00
timeout: 30000,
2025-02-06 12:02:32 +08:00
2025-02-03 23:58:33 +08:00
});
// 添加请求拦截器
service.interceptors.request.use(
(config: any) => {
2025-02-04 00:53:29 +08:00
config.headers = {
'Content-Type': 'application/json;charset=UTF-8',
"authorization": localStorage.getItem("token"),
}
2025-02-03 23:58:33 +08:00
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
2025-02-06 12:02:32 +08:00
if (data.code == 401) {
ElMessage.error(data.message)
}
console.log(data);
2025-02-03 23:58:33 +08:00
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 = '后端接口连接异常'
2025-02-06 12:02:32 +08:00
location.href = "/login"
2025-02-03 23:58:33 +08:00
}
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 }