Files
template-vue-hucky/src/utils/http.ts

35 lines
841 B
TypeScript
Raw Normal View History

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;
};