|
@@ -14,18 +14,20 @@ type UrlType =
|
|
|
export interface RequestOptions {
|
|
|
method?: any
|
|
|
params?: any
|
|
|
+ headers?: any
|
|
|
server?: boolean
|
|
|
+ [key: string]: any
|
|
|
}
|
|
|
|
|
|
export function useMyRequest() {
|
|
|
const request = async (
|
|
|
url: UrlType,
|
|
|
params: any,
|
|
|
- options: RequestOptions = {},
|
|
|
+ opt: RequestOptions = {},
|
|
|
) => {
|
|
|
const headers = useRequestHeaders(['cookie'])
|
|
|
const { apiBase: baseURL } = useRuntimeConfig().public
|
|
|
- let { method = (options?.method || 'GET') as string } = options
|
|
|
+ let { method = (opt?.method || 'GET') as string } = opt
|
|
|
method = method.toUpperCase()
|
|
|
|
|
|
// 处理请求体
|
|
@@ -52,15 +54,16 @@ export function useMyRequest() {
|
|
|
method,
|
|
|
params: { ...params },
|
|
|
headers,
|
|
|
- server: options.server || false,
|
|
|
+ server: opt.server || false,
|
|
|
credentials: 'include',
|
|
|
body: requestBody,
|
|
|
onRequest: ({ request, options }) => {
|
|
|
+ // console.log('onResponseError--------aaaa:', options)
|
|
|
const userStore = useUserStore()
|
|
|
const { token } = storeToRefs(userStore)
|
|
|
if (token.value) {
|
|
|
options.headers = {
|
|
|
- ...options.headers,
|
|
|
+ ...opt.headers,
|
|
|
'Authorization': token.value,
|
|
|
'X-Access-Token': token.value,
|
|
|
}
|
|
@@ -75,70 +78,47 @@ export function useMyRequest() {
|
|
|
plain: true,
|
|
|
})
|
|
|
},
|
|
|
+ // 响应成功+异常处理
|
|
|
onResponse: ({ request, response, options }) => {
|
|
|
- try {
|
|
|
- const data = response._data
|
|
|
- const { code, result, message } = data
|
|
|
- // 这里逻辑可以根据项目进行修改
|
|
|
- const hasSuccess
|
|
|
+ // console.log('onResponseError--------1:', request, response, options, opt)
|
|
|
+ const data = response._data
|
|
|
+ const { code, result, message } = data
|
|
|
+ const hasSuccess
|
|
|
= data && Reflect.has(data, 'code') && code === ResultEnum.SUCCESS
|
|
|
- if (hasSuccess)
|
|
|
- return resolve(result)
|
|
|
- let msg = ''
|
|
|
- switch (code) {
|
|
|
- case ResultEnum.TIMEOUT:
|
|
|
- msg = 'Login timeout, please login again.'
|
|
|
- // 被动登出,带redirect地址
|
|
|
- useUserStore().logout()
|
|
|
- break
|
|
|
- case 10010:
|
|
|
- // 此处10010控制无效的分享
|
|
|
- msg = ''
|
|
|
- break
|
|
|
- default:
|
|
|
- if (message)
|
|
|
- msg = message
|
|
|
- }
|
|
|
- if (msg) {
|
|
|
- ElMessage({
|
|
|
- message: msg,
|
|
|
- type: 'error',
|
|
|
- plain: true,
|
|
|
- })
|
|
|
- }
|
|
|
- throw new Error(msg || 'Error in request, please try again later.')
|
|
|
- }
|
|
|
- catch (error) {
|
|
|
- return reject(response._data)
|
|
|
+ if (hasSuccess)
|
|
|
+ return resolve(result)
|
|
|
+ let msg = ''
|
|
|
+ switch (code) {
|
|
|
+ case ResultEnum.TIMEOUT:
|
|
|
+ msg = 'Login timeout, please login again.'
|
|
|
+ // 超时,自动推出
|
|
|
+ useUserStore().logout()
|
|
|
+ break
|
|
|
+ default:
|
|
|
+ if (message)
|
|
|
+ msg = message
|
|
|
}
|
|
|
+ msg && !opt.isErrorPrompt
|
|
|
+ && ElMessage({
|
|
|
+ message: msg,
|
|
|
+ type: 'error',
|
|
|
+ plain: true,
|
|
|
+ })
|
|
|
+ return reject(response._data)
|
|
|
},
|
|
|
+ // 服务错误响应处理
|
|
|
onResponseError: (error: any) => {
|
|
|
const { response, code, message } = error || {}
|
|
|
const msg: string = response?.data?.message ?? ''
|
|
|
const err: string = error?.toString?.() ?? ''
|
|
|
let errMessage = ''
|
|
|
- try {
|
|
|
- if (code === 'ECONNABORTED' && message.includes('timeout')) {
|
|
|
- errMessage
|
|
|
+ if (code === 'ECONNABORTED' && message.includes('timeout')) {
|
|
|
+ errMessage
|
|
|
= 'The interface request timed out. Please refresh the page and try again.'
|
|
|
- }
|
|
|
-
|
|
|
- if (err?.includes('Network Error')) {
|
|
|
- errMessage
|
|
|
- = 'The network is abnormal. Please check whether your network connection is normal.'
|
|
|
- }
|
|
|
-
|
|
|
- if (errMessage) {
|
|
|
- ElMessage({
|
|
|
- message: errMessage,
|
|
|
- type: 'error',
|
|
|
- plain: true,
|
|
|
- })
|
|
|
- return reject(error)
|
|
|
- }
|
|
|
}
|
|
|
- catch (error) {
|
|
|
- throw new Error(error as unknown as string)
|
|
|
+ if (err?.includes('Network Error')) {
|
|
|
+ errMessage
|
|
|
+ = 'The network is abnormal. Please check whether your network connection is normal.'
|
|
|
}
|
|
|
const status = error?.response?.status
|
|
|
switch (status) {
|