增加状态码和操作本地存储方法

This commit is contained in:
LisianthusLeaf
2024-05-10 02:51:41 +08:00
parent 5b85f16a4c
commit 594a20a9e0
3 changed files with 88 additions and 8 deletions

View File

@@ -41,5 +41,5 @@
"OpenAPI":true
}
},
"updateTime":"2023-11-21 18:37:43"
"updateTime":"2024-05-10 01:15:47"
}

View File

@@ -1,5 +1,6 @@
import axios from "axios";
import { useSnackbarStore } from "@/stores/snackbarStore";
// import {storage} from "@/utils/storage";
const request = axios.create({
baseURL: "/appApi",
@@ -9,6 +10,8 @@ const request = axios.create({
request.interceptors.request.use(
(config) => {
//config.headers['Content-Type'] = 'application/json';
// const token = storage.get<string>('token')
// config.headers.token = token
return config;
},
(error) => {
@@ -22,12 +25,15 @@ request.interceptors.response.use(
(response) => {
const snackbarStore = useSnackbarStore();
if (response.status != 200) {
snackbarStore.showSuccessMessage("服务异常!");
snackbarStore.showErrorMessage("请求拦截器异常!");
}
let res = response.data;
if (res.code === 114514) {
if (res.code !== 200) {
snackbarStore.showErrorMessage(res.msg);
}
if (res.code === 114514) {
snackbarStore.showSuccessMessage(res.msg);
}
// 如果是返回的文件
if (response.config.responseType === "blob") {
return res;
@@ -39,13 +45,45 @@ request.interceptors.response.use(
return res;
},
(error) => {
const statusTextMap: Record<number, string> = {
204: '无内容',
400: '您的请求存在语法错误,服务器无法理解',
401: '登录失效,请重新登录',
403: '您没有权限执行此操作',
404: '您所请求的资源无法找到',
405: '该操作被禁止',
406: '服务器无法根据请求的内容特性完成请求',
407: '请求需要代理认证',
408: '请求超时',
409: '服务器处理请求时发生了冲突',
410: '请求的资源已被删除',
411: '需要Content-Length',
412: '客户端请求信息的先决条件错误',
413: '请求的实体过大,服务器无法处理',
414: '请求的URI过长服务器无法处理',
415: '不支持的媒体类型',
416: '请求的范围不符合要求',
417: '服务器无法满足请求头中 Expect 字段指定的预期行为',
418: 'Genius',
500: '服务器发生错误,请检查服务器',
501: '服务器不支持请求的功能,无法完成请求',
502: '网关错误',
503: '服务不可用,服务器暂时过载或维护中',
504: '网关超时',
505: '服务器不支持请求的HTTP协议的版本无法完成处理'
}
const snackbarStore = useSnackbarStore();
snackbarStore.showErrorMessage("操作异常!");
console.log("err" + error); // for debug
// localStorage.removeItem('token')
//router.replace({path:'/login'})
if (error.response && error.response.status) {
const statusText = statusTextMap[error.response.status] ?? '其他错误'
snackbarStore.showErrorMessage(`${statusText}(${error.response.status})`)
if (error.response.status === 401) {
// storage.remove('token')
// router.replace({path:'/login'})
}
return Promise.reject(error)
}
return Promise.reject(error);
}
},
);
export default request;

View File

@@ -0,0 +1,42 @@
/**
* 封装操作localstorage本地存储的方法
*/
export const storage = {
//存储
set(key: string, value: any) {
localStorage.setItem(key, JSON.stringify(value));
},
//取出数据
get<T>(key: string) {
const value = localStorage.getItem(key);
if (value && value != "undefined" && value != "null") {
return <T>JSON.parse(value);
}
},
// 删除数据
remove(key: string) {
localStorage.removeItem(key);
},
};
/**
* 封装操作sessionStorage本地存储的方法
*/
export const sessionStorage = {
//存储
set(key: string, value: any) {
window.sessionStorage.setItem(key, JSON.stringify(value));
},
//取出数据
get<T>(key: string) {
const value = window.sessionStorage.getItem(key);
if (value && value != "undefined" && value != "null") {
return <T>JSON.parse(value);
}
return null;
},
// 删除数据
remove(key: string) {
window.sessionStorage.removeItem(key);
},
};