feat: 新增 axios 请求封装与全局 API 命名空间类型

This commit is contained in:
2026-05-15 13:08:21 +08:00
parent 5bdd8603a1
commit 3ff0642706
6 changed files with 278 additions and 0 deletions

43
src/utils/request.ts Normal file
View File

@@ -0,0 +1,43 @@
import axios from 'axios';
const request = axios.create({
baseURL: import.meta.env.PUBLIC_BASE_URL,
timeout: 10000,
});
// 请求拦截器
request.interceptors.request.use(
(config) => {
// TODO: 添加 token 等请求头
return config;
},
(error) => {
return Promise.reject(error);
},
);
// 响应拦截器
request.interceptors.response.use(
(response) => {
// TODO: 统一处理业务错误码
return response;
},
(error) => {
// TODO: 统一处理网络错误
return Promise.reject(error);
},
);
export const get = <T>(url: string, params?: object) =>
request.get<API.Response<T>>(url, { params }).then((res) => res.data);
export const post = <T>(url: string, data?: object) =>
request.post<API.Response<T>>(url, data).then((res) => res.data);
export const put = <T>(url: string, data?: object) =>
request.put<API.Response<T>>(url, data).then((res) => res.data);
export const del = <T>(url: string, params?: object) =>
request.delete<API.Response<T>>(url, { params }).then((res) => res.data);
export default request;