AI_Painting_V2.0/src/utils/request.js
WangLeo 5da5496492 重构 API 层架构:统一 HTTP 请求、新增算力调度后端路由
- 请求拦截器统一 Auth 头不带 Bearer 前缀,新增 /suanli 前缀路由到算力调度后端
- 任务创建/轮询/历史接口迁移至 apis/display,改为 axios 调用替代原始 fetch
- 模型 API 分离为两层:apis 纯 HTTP 调用 + utils 缓存业务逻辑
- 新增历史任务列表接口 requestTaskHistory(支持 user_id/platform_code 筛选和分页)
- 响应拦截器兼容 status/code 双字段,用户信息兼容新旧 data 格式
- 移除免费次数(freeTimes)体系
- 更新 CLAUDE.md 文档
2026-06-02 18:05:55 +08:00

85 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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