This commit is contained in:
aixianling
2024-06-20 18:31:15 +08:00
parent 36c4466f09
commit 67aa5264ef
6 changed files with 104 additions and 21 deletions

41
src/utils/fetch.js Normal file
View File

@@ -0,0 +1,41 @@
const {axios, $glob} = window
let getAuthing = false
const getToken = () => {
getAuthing = true
return axios.post("http://10.0.97.209/data-boot/na/sys/login", {
t: Date.now(),
userAcc: "kengee",
password: "kengee@123",
uuid: "",
captcha: ""
}).then(res => {
if (res?.data?.data) {
$glob.token = res.data.data.token
}
}).finally(() => getAuthing = false)
}
const http = axios.create({baseURL: '/'})
const addToken = (config) => {
config.headers['h-token'] = $glob.token
return config
}
window.$wait = (t = 500) => new Promise(resolve => setTimeout(resolve, t))
http.interceptors.request.use(async config => {
while (getAuthing) {
await $wait()
}
if (!$glob.token && !getAuthing) {
await getToken()
}
return addToken(config)
})
http.interceptors.response.use(res => {
if (res?.data) {
return res.data
} else if (res?.code == 401) {
return getToken().then(() => http.request(res.config))
}
return res
})
window.$http = http