2
0
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:
耗子
2025-02-09 04:42:44 +08:00
parent a07c50b3f5
commit 23e215b009
14 changed files with 233 additions and 568 deletions

View File

@@ -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) {

View File

@@ -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',

View File

@@ -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
})
)
}