mirror of
https://github.com/acepanel/panel.git
synced 2026-02-06 08:47:16 +08:00
feat: alova.js替换axios
This commit is contained in:
@@ -1,18 +1,4 @@
|
||||
import { useUserStore } from '@/store'
|
||||
import type { ErrorResolveResponse } from '~/types/axios'
|
||||
|
||||
/** 自定义错误 */
|
||||
export class AxiosRejectError extends Error {
|
||||
code?: number | string
|
||||
data?: any
|
||||
|
||||
constructor(rejectData: ErrorResolveResponse, options?: ErrorOptions) {
|
||||
const { code, message, data } = rejectData
|
||||
super(message, options)
|
||||
this.code = code
|
||||
this.data = data
|
||||
}
|
||||
}
|
||||
|
||||
export function resolveResError(code: number | string | undefined, message = ''): string {
|
||||
switch (code) {
|
||||
|
||||
@@ -3,26 +3,6 @@ import type { AlovaXHRResponse } from '@alova/adapter-xhr'
|
||||
import { xhrRequestAdapter } from '@alova/adapter-xhr'
|
||||
import { createAlova, Method } from 'alova'
|
||||
import VueHook from 'alova/vue'
|
||||
import axios from 'axios'
|
||||
import { reqReject, reqResolve, resReject, resResolve } from './interceptors'
|
||||
|
||||
export function createAxios(options = {}) {
|
||||
const defaultOptions = {
|
||||
adapter: 'fetch',
|
||||
timeout: 0
|
||||
}
|
||||
const service = axios.create({
|
||||
...defaultOptions,
|
||||
...options
|
||||
})
|
||||
service.interceptors.request.use(reqResolve, reqReject)
|
||||
service.interceptors.response.use(resResolve, resReject)
|
||||
return service
|
||||
}
|
||||
|
||||
export const request = createAxios({
|
||||
baseURL: import.meta.env.VITE_BASE_API
|
||||
})
|
||||
|
||||
export const http = createAlova({
|
||||
id: 'panel',
|
||||
|
||||
@@ -1,85 +0,0 @@
|
||||
import type { AxiosError, AxiosResponse } from 'axios'
|
||||
import type { RequestConfig } from '~/types/axios'
|
||||
import { AxiosRejectError, resolveResError } from './helpers'
|
||||
|
||||
/** 请求拦截 */
|
||||
export function reqResolve(config: RequestConfig) {
|
||||
return config
|
||||
}
|
||||
|
||||
/** 请求错误拦截 */
|
||||
export function reqReject(error: AxiosError) {
|
||||
return Promise.reject(error)
|
||||
}
|
||||
|
||||
/** 响应拦截 */
|
||||
export function resResolve(response: AxiosResponse) {
|
||||
const { data, status, config, statusText } = response
|
||||
if (status !== 200) {
|
||||
const code = data?.code ?? status
|
||||
const message = resolveResError(code, data?.message ?? statusText)
|
||||
const { noNeedTip } = config as RequestConfig
|
||||
|
||||
if (!noNeedTip) {
|
||||
if (code == 422) {
|
||||
window.$message.error(message)
|
||||
} else {
|
||||
if (code != 401) {
|
||||
window.$dialog.error({
|
||||
title: '请求返回异常',
|
||||
content: message,
|
||||
maskClosable: false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.reject(new AxiosRejectError({ code, message, data: data || response }))
|
||||
}
|
||||
|
||||
return Promise.resolve(data)
|
||||
}
|
||||
|
||||
/** 响应错误拦截 */
|
||||
export function resReject(error: AxiosError) {
|
||||
if (!error || !error.response) {
|
||||
const code = error?.code
|
||||
/** 根据code处理对应的操作,并返回处理后的message */
|
||||
const message = resolveResError(code, error.message)
|
||||
window.$dialog.error({
|
||||
title: '请求出现异常',
|
||||
content: message,
|
||||
maskClosable: false
|
||||
})
|
||||
return Promise.reject(new AxiosRejectError({ code, message, data: error }))
|
||||
}
|
||||
const { data, status, config } = error.response
|
||||
let { code, message } = data as AxiosRejectError
|
||||
code = code ?? status
|
||||
message = message ?? error.message
|
||||
message = resolveResError(code, message)
|
||||
/** 需要错误提醒 */
|
||||
const { noNeedTip } = config as RequestConfig
|
||||
|
||||
if (!noNeedTip) {
|
||||
if (code == 422) {
|
||||
window.$message.error(message)
|
||||
} else {
|
||||
if (code != 401) {
|
||||
window.$dialog.error({
|
||||
title: '请求返回异常',
|
||||
content: message,
|
||||
maskClosable: false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return Promise.reject(
|
||||
new AxiosRejectError({
|
||||
code,
|
||||
message,
|
||||
data: error.response?.data || error.response
|
||||
})
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user