import axios from 'axios' import { getToken } from '@/utils/auth' import { userError } from './tokenError' // 创建axios实例 const service = axios.create({ baseURL: import.meta.env.VITE_API_BASE_URL, timeout: 50000 // 请求超时时间 }) const StatusCodeMessage = { 200: '服务器成功返回请求的数据', 201: '新建或修改数据成功。', 202: '一个请求已经进入后台排队(异步任务)', 204: '删除数据成功', 400: '请求错误(400)', 401: '未授权,请重新登录(401)', 403: '拒绝访问(403)', 404: '请求出错(404)', 408: '请求超时(408)', 500: '服务器错误(500)', 501: '服务未实现(501)', 502: '网络错误(502)', 503: '服务不可用(503)', 504: '网络超时(504)' } // request拦截器 service.interceptors.request.use( (config) => { const token = getToken() if (!config.headers) { config.headers = {} } // 统一 Auth 头不带 Bearer 前缀 if (token) config.headers.Authorization = token if (config.url?.startsWith(import.meta.env.VITE_API_TASK_PREFIX)) { // 算力调度后端 config.baseURL = import.meta.env.VITE_API_TASK_TARGET } else if (config.url?.startsWith(import.meta.env.VITE_API_PAY_PREFIX)) { // 支付服务路由 config.baseURL = import.meta.env.VITE_API_PAY_TARGET } else if (config.url?.startsWith(import.meta.env.VITE_API_AIGC_PREFIX)) { // 资源服务路由 config.baseURL = import.meta.env.VITE_API_AIGC_TARGET } return config }, (error) => { // Do something with request error Promise.reject(error) } ) // response 拦截器 service.interceptors.response.use( (response) => { const { data } = response const { success, code, status, msg, message } = data if (success || code === 0 || status === 0) { console.log('msg: \n', msg) return response.data } else if (code === 401 && response.config.url !== '/login/validateToken`') { // 判断code=401时进行页面刷新,但是不对检验token这个路由的请求判断,防止出现死循环 userError() } console.log('CodeMessage: \n', StatusCodeMessage[code]) console.log('msg: \n', msg) return response.data }, (error) => { console.log('err: \n', error) return Promise.reject(error) } ) // 添加HTTP DELETE方法 service.del = function (url, config) { return service({ method: 'delete', url, ...config }) } export default service