import axios, {AxiosError, AxiosRequestConfig, AxiosResponse} from "axios" import useUserStore from "@/store/user"; const baseURl = process.env.NEXT_PUBLIC_API_URL as string const service = axios.create({ baseURL: baseURl, timeout: 30000 }) //请求拦截器 service.interceptors.request.use((config) => { // //当数据为formData,自动修改请求头 if ((config.data instanceof FormData)) { (config as any).headers = {"Content-Type": "multipart/form-data"} } let token = useUserStore.getState().token if (token) { (config.headers).Authorization = `Bearer ${token}` } return config }, (error: AxiosError) => { return Promise.reject(error) }) //响应拦截器 service.interceptors.response.use((config: AxiosResponse) => { const {code, data} = config.data if ([1, '200'].includes(code)) { return data //当为文件流时 } else if (config.headers['content-types'] == 'application/octet-stream') { return config.data } else { // Message.error(message); return Promise.reject(config.data) } }, error => { if (error.message == 'Network Error') { // Toast.error("网络异常") } return Promise.reject() }) function requestPost(url: string, data = {}, config: AxiosRequestConfig = {}) { return service.post(url, data, config) } function requestPatch(url: string, data = {}, config: AxiosRequestConfig = {}) { return service.patch(url, data, config) } function requestGet(url: string, params: any = {}) { return service.get(url, {params}) } function requestDelete(url: string, data = {}) { return service.delete(url, {data: data}) } let request = { get: requestGet, post: requestPost, delete: requestDelete, patch: requestPatch, } export default request