feat: 新增 axios 请求封装与全局 API 命名空间类型
This commit is contained in:
43
src/utils/request.ts
Normal file
43
src/utils/request.ts
Normal 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;
|
||||
Reference in New Issue
Block a user