2025-08-01 17:52:35 +08:00
|
|
|
import axios, { type AxiosRequestConfig } from "axios";
|
|
|
|
|
import { useUserStore } from "@/stores/UserStore.ts";
|
|
|
|
|
|
|
|
|
|
const instance = axios.create({
|
|
|
|
|
baseURL: import.meta.env.VITE_SERVER,
|
|
|
|
|
});
|
|
|
|
|
|
2026-02-18 01:08:26 +08:00
|
|
|
// 所有请求自动加入 token
|
2025-08-01 17:52:35 +08:00
|
|
|
instance.interceptors.request.use((config) => {
|
|
|
|
|
const store = useUserStore();
|
2026-02-18 01:08:26 +08:00
|
|
|
if (!store.accessToken) {
|
2025-08-01 17:52:35 +08:00
|
|
|
return config;
|
|
|
|
|
}
|
2026-02-18 01:08:26 +08:00
|
|
|
const token = store.accessToken;
|
2025-08-01 17:52:35 +08:00
|
|
|
if (!token) {
|
|
|
|
|
return config;
|
|
|
|
|
}
|
2026-02-18 01:08:26 +08:00
|
|
|
config.headers["Authorization"] = `Bearer ${token}`;
|
2025-08-01 17:52:35 +08:00
|
|
|
return config;
|
|
|
|
|
});
|
|
|
|
|
|
2026-02-18 01:08:26 +08:00
|
|
|
export const http = async <T>(
|
|
|
|
|
config: AxiosRequestConfig,
|
|
|
|
|
): Promise<Result<T>> => {
|
2025-08-01 17:52:35 +08:00
|
|
|
const { data } = await instance.request<Result<T>>(config);
|
|
|
|
|
return data;
|
|
|
|
|
};
|
|
|
|
|
|
2026-02-18 01:08:26 +08:00
|
|
|
export const httpWithCustomReturn = async <T>(
|
|
|
|
|
config: AxiosRequestConfig,
|
|
|
|
|
): Promise<T> => {
|
|
|
|
|
const { data } = await instance.request<T>(config);
|
|
|
|
|
return data;
|
|
|
|
|
};
|