admin-webpc/src/utils/request.ts

142 lines
3.2 KiB
TypeScript

import axios from "axios";
import { ElMessage } from 'element-plus'
interface requestType {
url: string
params?: any
}
const handleCode = async (code: number, message: string) => {
if (code != 200) {
console.log(message);
ElMessage.error(message || `后端接口${code}异常`)
}
if (code == 401) {
ElMessage.error(message || '登录失效')
setTimeout(() => {
location.href = "/login"
}, 1500);
}
}
//创建axsio 赋给常量service
const service = axios.create({
baseURL: "https://sh-ocr-api.bskies.cc/",
// baseURL: "/api",
timeout: 30000,
});
// 添加请求拦截器
service.interceptors.request.use(
(config: any) => {
config.headers = {
'Content-Type': 'application/json;charset=UTF-8',
"authorization": localStorage.getItem("token"),
}
console.log(config, 'config')
return config;
},
(error: any) => {
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.message)
// 对响应错误做点什么
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 }