This commit is contained in:
编码猿
2025-09-18 02:51:28 +08:00
parent c26c2ed5d5
commit af2b3badd0
30 changed files with 1518 additions and 6584 deletions

View File

@@ -0,0 +1,5 @@
export class HttpConfig {
public static DevBaseUrl: string = "http://127.0.0.1:3000/api"
public static prodBaseUrl: string = "http://127.0.0.1:3000/api/"
public static apiList: string = ""
}

View File

@@ -0,0 +1,4 @@
export class ThemeConfig {
public static primaryColor: string = '#1890ff'; // 主色调
public static layoutType: 'side' | 'top' = 'side'; // 侧边栏布局
}

View File

@@ -0,0 +1,2 @@
export * from './HttpConfig';
export * from './ThemeConfig';

View File

@@ -0,0 +1 @@
# 临时占位,上传空文件夹,保存文件结构用,后面删除

View File

@@ -0,0 +1 @@
# 临时占位,上传空文件夹,保存文件结构用,后面删除

View File

@@ -0,0 +1,3 @@
export * from './infra';
export * from './utils';
export * from './config';

View File

@@ -0,0 +1,93 @@
import axios, {AxiosError, type AxiosInstance, type AxiosRequestConfig} from "axios";
import {UrlCheckUtils} from '../utils/index'
class AxiosInfra {
public instance: AxiosInstance;
public constructor() {
this.instance = axios.create({
baseURL: UrlCheckUtils.check(),
timeout: 10000,
headers: {
"Content-Type": "application/json"
}
});
this.ResponseInterceptor();
this.RequestInterceptor();
}
public async get(params: AxiosRequestConfig): Promise<any> {
return await this.instance.get(<string>params.url, {
params: params.data,
headers: Object.assign({ Authorization: localStorage.getItem("token") }, params.headers)
});
}
public async post(params: AxiosRequestConfig): Promise<any> {
return await this.instance.post(<string>params.url, params.data, {
headers: Object.assign({ Authorization: localStorage.getItem("token") }, params.headers)
})
}
/**
* Put 请求
* 请求参数请参考接口RequestParams
* @param params
*/
public async put(params: AxiosRequestConfig): Promise<any> {
return await this.instance.put(<string>params.url, params.data)
}
/**
* delete 请求
* 请求参数请参考接口RequestParams
* @param params
*/
public async delete(params: AxiosRequestConfig): Promise<any> {
return await this.instance.delete(<string>params.url, { params: params.data })
}
/**
* 响应拦截器
* @constructor
*/
public async ResponseInterceptor(): Promise<any> {
this.instance.interceptors.response.use(
(response: any) => {
return response.data.result;
},
(error: AxiosError) => {
console.log(`
❌ 请求错误 ❌
1、基地址: ${error.config?.baseURL}
2、短地址: ${error.config?.url}
3、请求 方式: ${error.config?.method}
4、请求 参数: ${JSON.stringify(error.config?.params)}
5、请求 头 : ${JSON.stringify(error.config?.headers)}
------------------------------------------------------------
6、错误信息为: ${error.message}
7、错误代码为: ${error.stack}
`);
return Promise.reject(error)
})
}
/**
* 添加请求拦截器
* @constructor
*/
public async RequestInterceptor(): Promise<any> {
this.instance.interceptors.request.use((config: any) => {
return config
}, function (error: AxiosError) {
return Promise.reject(error)
})
}
}
export default new AxiosInfra();

View File

@@ -0,0 +1 @@
export {default as http} from "./AxiosInfra"

View File

@@ -0,0 +1 @@
# 临时占位,上传空文件夹,保存文件结构用,后面删除

View File

@@ -0,0 +1 @@
/// <reference types="vite/client" />

View File

@@ -0,0 +1,12 @@
import {HttpConfig} from '../config'
export class UrlCheckUtils {
public static check() {
if (import.meta.env.MODE === 'production') {
return HttpConfig.prodBaseUrl;
} else {
return HttpConfig.DevBaseUrl;
}
}
}

View File

@@ -0,0 +1 @@
export * from './UrlCheckUtils';