Files
taotie-web/src/utils/request.ts

42 lines
989 B
TypeScript

import axios from 'axios';
import { useUserStore } from '@/store';
const request = axios.create({
baseURL: import.meta.env.PUBLIC_BASE_URL,
timeout: 10000,
});
// 请求拦截器:自动附加 token
request.interceptors.request.use(
(config) => {
const token = useUserStore.getState().userInfo?.token;
if (token) {
config.headers.Authorization = `Bearer ${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 default request;