commit b76323800995e88c6fcd3ede5a87ff62f0ff0a9d Author: funjia <13429193897@163.com> Date: Tue Feb 4 15:02:17 2025 +0800 feat: first commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/index.ts b/index.ts new file mode 100644 index 0000000..67149fe --- /dev/null +++ b/index.ts @@ -0,0 +1,120 @@ +import axios, { AxiosRequestConfig, AxiosResponse } from "axios"; +import Cookies from "js-cookie"; + +// axios.defaults.baseURL = ""; // 请求后台地址 +axios.defaults.headers.post["Content-Type"] = "application/json;charset=utf-8"; + +interface LogOutCodesProps { + status: number; + code: number; + msg?: string; +} + +axios.interceptors.request.use( + (config: AxiosRequestConfig) => { + // token授权 + const jwtToken: string = Cookies.get("Authorization") ?? ""; + config.headers = config.headers || {}; + config.headers.Authorization = `${jwtToken}`; + // 缓存问题 + config.headers["Cache-Control"] = "no-cache"; + return config; + }, + (err) => { + return Promise.reject(err); + } +); + +axios.interceptors.response.use( + (response: AxiosResponse) => { + const xhr: any = response.data ?? {}; + const { code, msg: resultMsg } = xhr; + // 需要退出重登的code和msg + let msg: string = ""; + switch (code) { + case 9: + msg = "请重新登录"; + break; + case 18: + msg = "授权过期,请重新登录"; + break; + case 27: + msg = "未安装License或License已过期"; + break; + case 28: + msg = "License权限不足"; + break; + default: + break; + } + if (code) { + // ElMessage.error(msg || resultMsg || "系统异常"); + axios.prototype.error(msg || resultMsg || "系统异常"); + } + return xhr; + }, + (error) => { + const response: any = error.response ?? {}; + const { data, status } = response; + const { code, reason } = data; + let msg: string = ""; + // 获取错误提示 + switch (status) { + case 400: + msg = + code === 17 + ? `异地登录,登录IP为${data.data},请重新登录` + : "请求错误"; + break; + case 401: + msg = reason || "鉴权失败"; + break; + case 403: + msg = "拒绝访问"; + break; + case 404: + msg = "请求错误,未找到该资源"; + break; + case 405: + msg = "请求方法未允许"; + break; + case 408: + msg = "请求超时"; + break; + case 413: + msg = "请求数据过多"; + break; + case 500: + msg = "服务器端出错"; + break; + case 501: + msg = "网络未实现"; + break; + case 503: + msg = "服务不可用"; + break; + case 504: + msg = "网络超时"; + break; + case 505: + msg = "http版本不支持该请求"; + break; + case 502: + default: + break; + } + // ElMessage.error(msg); + axios.prototype(msg); + return Promise.reject(error).catch(() => { + if (401 == status) { + window.location.href = "/"; + } + }); + } +); + +axios.prototype.error=(msg)=>{ + +} + +export default axios; diff --git a/package.json b/package.json new file mode 100644 index 0000000..d33c6f7 --- /dev/null +++ b/package.json @@ -0,0 +1,19 @@ +{ + "name": "funjia-axios", + "private": true, + "version": "0.0.1", + "scripts": { + "dev": "vite --port=4444", + "build": "vite build", + "preview": "vite preview --port=4444" + }, + "dependencies": { + "axios": "^0.26.1", + "js-cookie": "^3.0.1" + }, + "devDependencies": { + "@types/lodash-es": "^4.17.6", + "@types/node": "^17.0.25", + "typescript": "^4.5.4" + } + } \ No newline at end of file diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000..55624f1 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,42 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@types/lodash-es@^4.17.6": + version "4.17.12" + resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b" + integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ== + dependencies: + "@types/lodash" "*" + +"@types/lodash@*": + version "4.17.15" + resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.15.tgz#12d4af0ed17cc7600ce1f9980cec48fc17ad1e89" + integrity sha512-w/P33JFeySuhN6JLkysYUK2gEmy9kHHFN7E8ro0tkfmlDOgxBDzWEZ/J8cWA+fHqFevpswDTFZnDx+R9lbL6xw== + +"@types/node@^17.0.25": + version "17.0.45" + resolved "https://registry.npmmirror.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" + integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== + +axios@^0.26.1: + version "0.26.1" + resolved "https://registry.npmmirror.com/axios/-/axios-0.26.1.tgz#1ede41c51fcf51bbbd6fd43669caaa4f0495aaa9" + integrity sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA== + dependencies: + follow-redirects "^1.14.8" + +follow-redirects@^1.14.8: + version "1.15.9" + resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +js-cookie@^3.0.1: + version "3.0.5" + resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc" + integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw== + +typescript@^4.5.4: + version "4.9.5" + resolved "https://registry.npmmirror.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==