* Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
*/
import axios from 'axios';
import i18n from '@/i18n';
const isProduction = import.meta.env.VITE_MODE === 'production';
let baseURL: string = '';
export const setBaseURL = (url: string) => {
const [protocol, URL] = url.split('://');
baseURL = `${protocol === 'ws' ? 'http' : 'https'}://${URL}`;
};
const getBaseURL = () => {
if (isProduction) {
return baseURL;
} else {
return import.meta.env.VITE_URL;
}
};
const requestBase = axios.create({
baseURL: '',
timeout: 10000,
});
requestBase.interceptors.request.use(
config => {
config.headers['content-type'] = 'text/plain';
config.url = `${getBaseURL()}${config.url}`;
return config;
},
error => {
return Promise.reject(error);
}
);
requestBase.interceptors.response.use(
config => {
return config;
},
error => {
return Promise.reject(error);
}
);
interface RequestOpts {
url: string;
method: string;
data?: object;
params?: object;
signal?: AbortSignal;
};
export const request = async (requestOpts: RequestOpts) => {
try {
const res = await requestBase(requestOpts);
return res.data;
} catch (err: any) {
请求异常处理
如果是取消请求跳过
如果是其它异常,抛出异常的请求
*/
if (err.message !== 'canceled') {
return { result: false, msg: `${i18n.t('common:requestFail')}:${requestOpts.url}` };
}
}
};