| | |
| | | import axios from 'axios' |
| | | import useUserInfoStore from '@/stores/userInfo' |
| | | import {host, WebSocketHost} from '@/utils/constants' |
| | | const userStore=useUserInfoStore() |
| | | import { host, WebSocketHost } from '@/utils/constants' |
| | | const userStore = useUserInfoStore() |
| | | const request = axios.create({ |
| | | baseURL: `http://${WebSocketHost}:${host}/api`, // 注意!! 这里是全局统一加上了 后端接口前缀 前缀,后端必须进行跨域配置! |
| | | timeout: 30000 |
| | |
| | | // 比如统一加token,对请求参数统一加密 |
| | | request.interceptors.request.use(config => { |
| | | config.headers['Content-Type'] = 'application/json;charset=utf-8'; |
| | | if(userStore.user){ |
| | | if (userStore.user) { |
| | | config.headers['token'] = userStore.user.token; |
| | | } |
| | | // 设置请求头 |
| | | // 从localStorage获取当前语言,映射为标准标识 |
| | | const lang = localStorage.getItem('lang') || 'zh' // 默认中文 |
| | | // 语言映射表:前端存储的标识 → 后端识别的标准Locale标识 |
| | | const langMap = { |
| | | 'zh': 'zh-CN', // 中文 → 对应后端zh_CN |
| | | 'en': 'en-US', // 英文 → 对应后端en_US |
| | | 'py': 'ru-RU' // 俄语 → 对应后端ru_RU |
| | | } |
| | | config.headers['Accept-Language'] = langMap[lang] || 'zh-CN' // 默认中文 |
| | | |
| | | return config |
| | | }, error => { |
| | | return Promise.reject(error) |
| | | return Promise.reject(error) |
| | | }); |
| | | // response 拦截器 |
| | | // 可以在接口响应后统一处理结果 |
| | |
| | | let res = response.data; |
| | | // 如果是返回的文件 |
| | | if (response.config.responseType === 'blob') { |
| | | return res |
| | | return res |
| | | } |
| | | // 兼容服务端返回的字符串数据 |
| | | if (typeof res === 'string') { |
| | | res = res ? JSON.parse(res) : res |
| | | res = res ? JSON.parse(res) : res |
| | | } |
| | | return res; |
| | | }, |
| | | error => { |
| | | return Promise.reject(error) |
| | | return Promise.reject(error) |
| | | } |
| | | ) |
| | | export default request |