| @@ -53,7 +53,7 @@ export const requestConfig: RequestConfig = { | |||||
| ], | ], | ||||
| responseInterceptors: [ | responseInterceptors: [ | ||||
| [ | [ | ||||
| (response: AxiosResponse) => { | |||||
| async (response: AxiosResponse) => { | |||||
| const { status, data, config } = response || {}; | const { status, data, config } = response || {}; | ||||
| const options = config as RequestOptions; | const options = config as RequestOptions; | ||||
| const skipErrorHandler = options?.skipErrorHandler; | const skipErrorHandler = options?.skipErrorHandler; | ||||
| @@ -63,20 +63,45 @@ export const requestConfig: RequestConfig = { | |||||
| Loading.hide(); | Loading.hide(); | ||||
| } | } | ||||
| if (status >= 200 && status < 300) { | if (status >= 200 && status < 300) { | ||||
| if (status === 204) { | |||||
| // 无内容或者无需验证 | |||||
| if (status === 204 || skipValidating) { | |||||
| return response; | return response; | ||||
| } else if (data && (skipValidating || data instanceof Blob || data.code === 200)) { | |||||
| } | |||||
| if (data && data.code === 200) { | |||||
| return response; | |||||
| } | |||||
| // Blob 数据 | |||||
| if (data && data instanceof Blob && data.size > 0) { | |||||
| // 下载文件失败时,返回的是 JSON 数据,格式为:{code: 500, msg: "xxx"} | |||||
| if (data.type === 'application/json') { | |||||
| try { | |||||
| const text = await data.text(); | |||||
| const json = JSON.parse(text); | |||||
| if (json.code === 500) { | |||||
| popupError(json.msg || '请求失败', skipErrorHandler); | |||||
| return Promise.reject(json); | |||||
| } | |||||
| } catch (error) { | |||||
| console.error('JSON 解析失败', error); | |||||
| } | |||||
| } | |||||
| return response; | return response; | ||||
| } else if (data && data.code === 401) { | |||||
| } | |||||
| // Token 失效 | |||||
| if (data && data.code === 401) { | |||||
| clearSessionToken(); | clearSessionToken(); | ||||
| setRemoteMenu(null); | setRemoteMenu(null); | ||||
| gotoLoginPage(false); | gotoLoginPage(false); | ||||
| popupError('请重新登录'); | popupError('请重新登录'); | ||||
| return Promise.reject(response); | return Promise.reject(response); | ||||
| } else { | |||||
| popupError(data?.msg ?? '请求失败', skipErrorHandler); | |||||
| return Promise.reject(response); | |||||
| } | } | ||||
| popupError(data?.msg ?? '请求失败', skipErrorHandler); | |||||
| return Promise.reject(response); | |||||
| } else { | } else { | ||||
| popupError('请求失败', skipErrorHandler); | popupError('请求失败', skipErrorHandler); | ||||
| return Promise.reject(response); | return Promise.reject(response); | ||||