'init'
This commit is contained in:
44
mp-sc-admin/src/utils/request.ts
Normal file
44
mp-sc-admin/src/utils/request.ts
Normal file
@@ -0,0 +1,44 @@
|
||||
import { createAlova } from 'alova'
|
||||
import VueHook from 'alova/vue'
|
||||
import adapterFetch from 'alova/fetch'
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
export const request = createAlova({
|
||||
baseURL: import.meta.env.VITE_API_BASEURL || '',
|
||||
// 设置为null即可全局关闭全部请求缓存
|
||||
cacheFor: null,
|
||||
statesHook: VueHook,
|
||||
requestAdapter: adapterFetch(),
|
||||
beforeRequest(method) {
|
||||
const token = localStorage.getItem('admin_token')
|
||||
if (token) {
|
||||
method.config.headers = { ...method.config.headers, Authorization: `Bearer ${token}` }
|
||||
}
|
||||
},
|
||||
responded: {
|
||||
onSuccess: async (response) => {
|
||||
const data = await response.json()
|
||||
if (data.code !== 200) {
|
||||
if (response.status === 401 || data.code === 401) {
|
||||
localStorage.removeItem('admin_token')
|
||||
window.location.href = '/login'
|
||||
throw new Error('redirect')
|
||||
}
|
||||
ElMessage.error(data.msg)
|
||||
throw new Error(data.msg)
|
||||
}
|
||||
return data
|
||||
},
|
||||
onError: (error) => {
|
||||
if (error?.message === 'redirect') return
|
||||
if (error?.response?.status === 401) {
|
||||
localStorage.removeItem('admin_token')
|
||||
window.location.href = '/login'
|
||||
return
|
||||
}
|
||||
ElMessage.error(error.message || '请求失败')
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
export default request
|
||||
Reference in New Issue
Block a user